czym są inicjalizatory wygody?

Swift version: 5.2

Paul Hudson @twostraws 28 maja 2019

wyznaczone inicjalizatory są domyślnym sposobem tworzenia nowych instancji typu. Istnieją inne, znane jako inicjalizatory wygody, które pomagają łatwiej wykonywać typowe zadania, ale są one dodatkiem do wyznaczonych inicjatorów, a nie zamiennikiem.

na przykład możesz mieć Polygon klasę, która przechowuje zestawy punktów, które mają być narysowane później, jak to:

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

teraz, jeśli to była tylko struktura, możesz dodać inne inicjalizatory. Ale ponieważ jest to klasa – gdzie zasady inicjalizacji są dość złożone – możesz dodać wygodny inicjalizator, który ustawia kwadraty o określonej długości, w ten sposób:

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

zauważ, że inicjalizator wygody kończy się wywołaniem wyznaczonego inicjalizatora – jest to wymóg i oznacza, że Twoje inicjalizatory wygody są odpowiedzialne tylko za konfigurację części, które są dla nich unikalne, a nie za robienie wszystkiego.

hackowanie za pomocą Swift jest sponsorowane przez RevenueCat

sponsorowane Budowanie i utrzymywanie infrastruktury subskrypcji w aplikacji jest trudne. Na szczęście jest lepszy sposób. Dzięki RevenueCat możesz wdrożyć subskrypcje dla swojej aplikacji w ciągu kilku godzin, a nie miesięcy, dzięki czemu możesz wrócić do tworzenia aplikacji.

Wypróbuj za darmo

Sponsoruj hakowanie z Swift i dotrzyj do największej społeczności Swift na świecie!

dostępne od iOS 8.0 – dowiedz się więcej w mojej książce Swift Design Patterns

podobne rozwiązania…

  • czym są oznaczone inicjalizatory?
  • Fixing „Class ViewController has no initializers”
  • Jak przekonwertować łańcuch nazw HTML na UIColor
  • Jak używać containment kontrolera widoku
  • Jak przekonwertować kolor szesnastkowy na UIColor

informacje o Swift Knowledge Base

jest to część Swift Knowledge Base, bezpłatnego, przeszukiwalnego zbioru rozwiązań dla typowych pytań iOS.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.