Hva er bekvemmelighet initializers?

Swift versjon: 5.2

Paul Hudson @twostraws 28.Mai 2019

Utpekte initialisatorer er standard måte å opprette nye forekomster av en type på. Det er andre, kjent som bekvemmelighetsinitialisatorer, som er der for å hjelpe deg med å oppnå vanlige oppgaver lettere, men de er i tillegg til dine utpekte initialisatorer i stedet for en erstatning.

for eksempel kan du ha en Polygon klasse som lagrer sett med poeng som skal tegnes senere, slik:

class Polygon { var points: init(points: ) { self.points = points }}

nå, hvis det bare var en struktur, kan du gå videre og legge til andre initialisatorer. Men som det er en klasse – hvor reglene for initialisering er ganske komplekse-kan du legge til en praktisk initialiserer som setter opp firkanter av en bestemt lengde, slik:

convenience init(squareWithLength length: CGFloat) { let points = self.init(points: points)}

Merk hvordan bekvemmelighetsinitialisatoren slutter ved å ringe den angitte initialisatoren – dette er et krav, og betyr at bekvemmelighetsinitialisatorene dine bare er ansvarlige for å sette opp delene som er unike for dem, i stedet for å gjøre alt.

Hacking Med Swift er sponset av RevenueCat

SPONSET Bygging og vedlikehold av abonnementsinfrastruktur i appen er vanskelig. Heldigvis finnes det en bedre måte. Med RevenueCat kan du implementere abonnementer for appen din i timer, ikke måneder, slik at du kan komme tilbake til å bygge appen din.

Prøv det gratis

Sponsor Hacking Med Swift og nå verdens største Swift samfunnet!

Tilgjengelig fra iOS 8.0-lær Mer I min bok Swift Design Patterns

Lignende løsninger…

  • Hva er utpekt initializers?
  • Fixing «Class ViewController has no initializers»
  • slik konverterer DU EN HTML-navnestreng til En UIColor
  • slik bruker du vis controller containment
  • hvordan konvertere en hex-farge til En UIColor

Om Swift Knowledge Base

Dette er en del av Swift Knowledge Base, en gratis, søkbar samling av løsninger for vanlige iOS-spørsmål.



Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.