Bird
Raised Fist0
Swiftprogramming~5 mins

Class declaration syntax in Swift - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Class declaration syntax
O(n)
Understanding Time Complexity

When we write a class in Swift, it's important to know how the time it takes to create or use that class changes as we add more parts to it.

We want to answer: How does the time to declare and use a class grow when the class has more properties or methods?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func greet() {
        print("Hello, my name is \(name)")
    }
}
    

This code defines a simple class with two properties, an initializer, and a method to greet.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: There are no loops or repeated operations inside the class declaration itself.
  • How many times: The initializer and method run once per object created or method call, but the class declaration runs once when the program loads.
How Execution Grows With Input

Explain the growth pattern intuitively.

Input Size (number of properties/methods)Approx. Operations
2Small, fixed setup time
10Still small, grows a little
100More setup work, but still linear growth

Pattern observation: The time to declare a class grows roughly in a straight line as you add more properties or methods.

Final Time Complexity

Time Complexity: O(n)

This means the time to declare a class grows linearly with the number of properties and methods it has.

Common Mistake

[X] Wrong: "Declaring a class always takes the same time no matter how big it is."

[OK] Correct: Adding more properties or methods means more work for the compiler to set up, so the time grows with size.

Interview Connect

Understanding how class size affects setup time helps you write clear and efficient code, a skill that shows you think about how your programs work behind the scenes.

Self-Check

"What if we added inheritance or protocols to the class? How would the time complexity change?"

Practice

(1/5)
1. What is the correct way to start declaring a class named Car in Swift?
easy
A. function Car() { }
B. def Car() { }
C. class Car { }
D. struct Car { }

Solution

  1. Step 1: Recognize Swift class syntax

    In Swift, classes start with the keyword class followed by the class name and curly braces.
  2. Step 2: Match the correct option

    class Car { } uses class Car { }, which is the correct syntax for declaring a class named Car.
  3. Final Answer:

    class Car { } -> Option C
  4. Quick Check:

    Swift class declaration = class ClassName { } [OK]
Hint: Look for 'class' keyword followed by name and braces [OK]
Common Mistakes:
  • Using 'def' or 'function' which are not Swift keywords
  • Confusing struct with class
  • Missing curly braces
2. Which of the following is the correct syntax to declare a class with an initializer in Swift?
easy
A. class Person { init(name: String) { self.name = name } var name: String }
B. class Person { var name: String; init(name: String) { self.name = name } }
C. class Person { init(name: String) { name = self.name } var name: String }
D. class Person { var name: String init(name: String) { name = name } }

Solution

  1. Step 1: Understand property declaration order

    In Swift, properties should be declared before the initializer for clarity and correctness.
  2. Step 2: Check initializer syntax

    The initializer must assign the parameter to the property using self.name = name.
  3. Final Answer:

    class Person { var name: String; init(name: String) { self.name = name } } -> Option B
  4. Quick Check:

    Properties before init, use self.property = parameter [OK]
Hint: Declare properties before init; assign with self.property = parameter [OK]
Common Mistakes:
  • Declaring properties after init causing errors
  • Assigning parameter to self incorrectly
  • Missing semicolon or braces
3. What will be the output of this Swift code?
class Animal {
    var name: String
    init(name: String) {
        self.name = name
    }
    func speak() -> String {
        return "Hello, I am \(name)"
    }
}

let dog = Animal(name: "Buddy")
print(dog.speak())
medium
A. Hello, I am name
B. Error: Missing initializer
C. Hello, I am
D. Hello, I am Buddy

Solution

  1. Step 1: Understand class initialization

    The class Animal has a property name initialized via init(name: String). The instance dog is created with name "Buddy".
  2. Step 2: Analyze the speak() method output

    The speak() method returns a string with the name property interpolated. So it returns "Hello, I am Buddy".
  3. Final Answer:

    Hello, I am Buddy -> Option D
  4. Quick Check:

    String interpolation with property = Hello, I am Buddy [OK]
Hint: Check property value passed to init and used in method [OK]
Common Mistakes:
  • Confusing property name with string literal
  • Forgetting to call speak() method
  • Assuming default values without init
4. Identify the error in this Swift class declaration:
class Book {
    var title: String
    init(title: String) {
        title = title
    }
}
medium
A. Property 'title' is not initialized correctly
B. Missing class keyword
C. Initializer has wrong name
D. No error, code is correct

Solution

  1. Step 1: Check property assignment in initializer

    The initializer assigns title = title, which assigns the parameter to itself, not to the property.
  2. Step 2: Correct assignment syntax

    It should be self.title = title to assign the parameter value to the property.
  3. Final Answer:

    Property 'title' is not initialized correctly -> Option A
  4. Quick Check:

    Use self.property = parameter to assign [OK]
Hint: Use self.property = parameter to avoid confusion [OK]
Common Mistakes:
  • Assigning parameter to itself instead of property
  • Forgetting self keyword
  • Assuming implicit assignment
5. You want to create a Swift class Rectangle with properties width and height, and a method area() that returns the area. Which of the following is the correct complete class declaration?
hard
A. class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } func area() -> Double { return width * height } }
B. class Rectangle { var width: Double var height: Double func area() -> Double { return width * height } init(width: Double, height: Double) { width = width height = height } }
C. class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { width = width height = height } func area() -> Double { return width * height } }
D. class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } func area() { width * height } }

Solution

  1. Step 1: Check property initialization

    Properties width and height must be assigned using self.width = width and self.height = height in the initializer.
  2. Step 2: Verify method return type and body

    The area() method must return a Double and use return width * height.
  3. Final Answer:

    class Rectangle { var width: Double var height: Double init(width: Double, height: Double) { self.width = width self.height = height } func area() -> Double { return width * height } } -> Option A
  4. Quick Check:

    Use self.property in init and return in methods [OK]
Hint: Assign properties with self. and return values in methods [OK]
Common Mistakes:
  • Assigning parameters to themselves without self.
  • Missing return statement in method
  • Incorrect method return type
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard