Sobes.tech
Middle

Ποια είναι η διαφορά μεταξύ των conventions και των designated;

sobes.tech AI

Απάντηση από AI

Οι αρχικοποιητές άνεσης είναι δευτερεύοντες, μπορούν να καλούν μόνο άλλους αρχικοποιητές της ίδιας κλάσης, και τελικά να αναθέτουν την κλήση στον καθορισμένο αρχικοποιητή. Χρησιμοποιούνται για την προσθήκη βολικών τρόπων δημιουργίας στιγμιοτύπων.

Οι καθορισμένοι αρχικοποιητές είναι οι κύριοι, διασφαλίζουν την πλήρη αρχικοποίηση όλων των αποθηκευμένων ιδιοτήτων της κλάσης (των δικών τους και των γονικών). Μπορούν να καλούν καθορισμένους αρχικοποιητές της γονικής κλάσης. Κάθε κλάση πρέπει να έχει τουλάχιστον έναν καθορισμένο αρχικοποιητή.

class BaseClass {
    var baseProperty: String

    init(baseProperty: String) { // Καθορισμένος αρχικοποιητής
        self.baseProperty = baseProperty
    }
}

class DerivedClass: BaseClass {
    var derivedProperty: Int

    init(baseProperty: String, derivedProperty: Int) { // Καθορισμένος αρχικοποιητής
        self.derivedProperty = derivedProperty
        super.init(baseProperty: baseProperty) // Κλήση στον καθορισμένο αρχικοποιητή της γονικής
    }

    convenience init(baseProperty: String) { // Αρχικοποιητής άνεσης
        self.init(baseProperty: baseProperty, derivedProperty: 0) // Αναθέτει στον δικό του καθορισμένο
    }

    convenience init() { // Αρχικοποιητής άνεσης
        self.init(baseProperty: "Default Base", derivedProperty: -1) // Αναθέτει στον δικό του καθορισμένο
    }
}