Vad är bekvämlighet initializers?

Swift version: 5.2

Paul Hudson @twostraws May 28th 2019

utsedda initializers är standard sättet att skapa nya instanser av en typ. Det finns andra, kända som bekvämlighetsinitiatorer, som är där för att hjälpa dig att utföra vanliga uppgifter lättare, men de är förutom dina utsedda initialisatorer snarare än en ersättning.

Du kan till exempel ha en Polygon klass som lagrar uppsättningar punkter som ska dras senare, så här:

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

Nu, om det bara var en struktur kan du gå vidare och lägga till andra initialisatorer. Men eftersom det är en klass – där reglerna för initialisering är ganska komplexa-kan du lägga till en bekvämlighetsinitierare som sätter upp kvadrater av en viss längd, så här:

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

notera hur bekvämlighetsinitieraren slutar genom att ringa den angivna initialiseraren – detta är ett krav och innebär att dina bekvämlighetsinitiatorer endast ansvarar för att ställa in de delar som är unika för dem snarare än att göra allt.

Hacking med Swift sponsras av RevenueCat

sponsrad byggnad och underhåll av abonnemangsinfrastruktur i appen är svårt. Lyckligtvis finns det ett bättre sätt. Med RevenueCat kan du implementera prenumerationer för din app på timmar, inte månader, så att du kan komma tillbaka till att bygga din app.

prova det gratis

sponsra Hacking med Swift och nå världens största Swift-community!

tillgänglig från iOS 8.0-Läs mer i min bok Swift Design Patterns

liknande lösningar …

  • vad betecknas initializers?
  • Fixing ”Class ViewController har inga initializers”
  • så här konverterar du en HTML-namnsträng till en UIColor
  • så här använder du view controller containment
  • Hur konverterar du en hex-färg till en UIColor

om Swift Knowledge Base

detta är en del av Swift Knowledge Base, en gratis, sökbar samling lösningar för vanliga iOS-frågor.



Lämna ett svar

Din e-postadress kommer inte publiceras.