Swift Tutorials: Designated vs Convenience Initializers

beginner
12 min

Swift Tutorials: Designated vs Convenience Initializers

Welcome back to CodeYourCraft! Today, we're diving into one of the essential concepts of Swift programming - Designated vs Convenience Initializers. Let's get started!

What are Initializers? 🎯

Initializers are special methods used to create and initialize the properties of a custom class or structure in Swift. They are automatically called when an instance of the class or structure is created.

swift
struct Person { var name: String var age: Int init(name: String, age: Int) { self.name = name self.age = age } } let john = Person(name: "John", age: 25)

In the example above, we have a Person structure with two properties: name and age. We also have an initializer that initializes these properties when we create a new instance of Person.

Designated Initializers 💡

Designated initializers are the primary initializers that Swift uses to create instances of a class or structure. They are responsible for setting up all the properties of the class or structure.

swift
class Student { var name: String var age: Int var studentID: String init(name: String, age: Int) { self.name = name self.age = age self.studentID = "12345" // Default student ID } convenience init(name: String, age: Int, studentID: String) { // Call designated initializer self.init(name: name, age: age) self.studentID = studentID } } let student = Student(name: "John", age: 25, studentID: "67890")

In the example above, we have a Student class with three properties: name, age, and studentID. We have two initializers: a designated initializer and a convenience initializer. The designated initializer sets up the name and age properties, while the studentID property is set to a default value.

The convenience initializer calls the designated initializer and then sets the studentID property with a provided value.

Convenience Initializers 📝

Convenience initializers provide an easy way to create instances of a class or structure when the required properties can be initialized using other initializers. They are optional and should always call a designated initializer.

swift
class Car { var model: String var year: Int var color: String init(model: String, year: Int) { self.model = model self.year = year self.color = "Red" // Default color } convenience init(model: String, year: Int, color: String) { // Call designated initializer self.init(model: model, year: year) self.color = color } } let car = Car(model: "Tesla", year: 2021, color: "Blue")

In the example above, we have a Car class with three properties: model, year, and color. We have two initializers: a designated initializer and a convenience initializer. The designated initializer sets up the model and year properties, while the color property is set to a default value.

The convenience initializer calls the designated initializer and then sets the color property with a provided value.

Quick Quiz
Question 1 of 1

What is the difference between designated initializers and convenience initializers in Swift?

When to Use Designated vs Convenience Initializers ✅

Use designated initializers when you want to set up all the properties of a class or structure and provide a primary way to create instances. Use convenience initializers when you want to provide alternative ways to create instances by calling the designated initializer and setting additional properties.

Quick Quiz
Question 1 of 1

When should you use a designated initializer in Swift?

Quick Quiz
Question 1 of 1

When should you use a convenience initializer in Swift?

Wrapping Up 📝

In this lesson, we learned about designated and convenience initializers in Swift. We discussed what initializers are, the difference between designated and convenience initializers, and when to use each one.

Remember, designated initializers are the primary initializers used to create instances of a class or structure, while convenience initializers provide alternative ways to create instances by calling the designated initializer and setting additional properties.

Now, go ahead and start using designated and convenience initializers in your Swift projects! Happy coding! 🚀