Sobes.tech
Junior — Middle

Millised on mugavuse (convenience) ja määratud (designated) initsialiseerijate erinevused Swiftis?

sobes.tech AI

Vastus AI-lt

In Swift, there are two types of initializers: designated and convenience.

  • Designated initializers are the primary initializers of a class, which initialize all properties and call the superclass initializer. Each class must have at least one designated initializer.

  • Convenience initializers are auxiliary, simplify object creation with specific parameters, call other initializers of the same class (usually designated). They do not initialize all properties directly.

Rules:

  • A convenience initializer must call another initializer of the same class.
  • A designated initializer must call a designated initializer of the superclass.

Example:

class Vehicle {
    var wheels: Int
    
    // Designated
    init(wheels: Int) {
        self.wheels = wheels
    }
    
    // Convenience
    convenience init() {
        self.init(wheels: 4)
    }
}