What is a key difference between classes and structs in Swift?
Classes support inheritance and reference semantics, while structs do not. Structs have value semantics, meaning each copy is independent.
Click to reveal answer
beginner
Why do classes exist alongside structs in Swift?
Classes exist to provide features like inheritance, reference sharing, and deinitializers, which structs do not support.
Click to reveal answer
beginner
What does it mean that structs have value semantics?
Value semantics means when you assign or pass a struct, a copy is made. Changes to one copy do not affect others.
Click to reveal answer
beginner
What is a real-life example to understand reference semantics of classes?
Think of a class instance like a shared remote control. Multiple people can use the same remote (reference), so changes affect all users.
Click to reveal answer
beginner
Can structs in Swift have methods and properties?
Yes, structs can have methods and properties, but they cannot inherit from other types or have deinitializers.
Click to reveal answer
Which feature is unique to classes in Swift?
AHaving properties
BInheritance
CBeing able to create instances
DHaving methods
✗ Incorrect
Only classes support inheritance; structs do not.
What happens when you assign a struct to a new variable?
AThe struct becomes immutable
BBoth variables point to the same instance
CThe original struct is deleted
DA new copy is created
✗ Incorrect
Structs have value semantics, so assignment creates a copy.
Which of these is true about classes in Swift?
AThey have reference semantics
BThey always create copies on assignment
CThey cannot have methods
DThey cannot have properties
✗ Incorrect
Classes use reference semantics, so variables share the same instance.
Why might you choose a struct over a class?
AYou want independent copies
BYou need inheritance
CYou want shared state
DYou need deinitializers
✗ Incorrect
Structs are good when you want each copy to be independent.
Which feature do structs NOT support?
AMethods
BProperties
CDeinitializers
DInitializers
✗ Incorrect
Structs cannot have deinitializers; only classes can.
Explain why Swift has both classes and structs. What are the main differences and when would you use each?
Think about how data is shared or copied in your program.
You got /6 concepts.
Describe a real-life example that helps understand the difference between reference and value semantics in Swift.
Use everyday objects to explain how data sharing works.
You got /4 concepts.
Practice
(1/5)
1. Why do classes exist alongside structs in Swift?
easy
A. Because classes cannot store data, only methods
B. Because structs are slower than classes in all cases
C. Because classes support shared references and inheritance, while structs do not
D. Because structs allow inheritance but classes do not
Solution
Step 1: Understand the difference between classes and structs
Structs are value types, meaning each copy is independent. Classes are reference types, meaning multiple variables can share the same instance.
Step 2: Identify why classes are needed
Classes allow shared data through references and support inheritance, which structs do not.
Final Answer:
Because classes support shared references and inheritance, while structs do not -> Option C
Quick Check:
Classes = shared references + inheritance [OK]
Hint: Classes share data and support inheritance; structs do not [OK]
Common Mistakes:
Thinking structs support inheritance
Believing classes cannot store data
Assuming structs are always slower
2. Which of the following is the correct way to declare a class in Swift?
easy
A. struct MyClass { var name: String }
B. class MyClass { var name: String }
C. func MyClass() { var name: String }
D. let MyClass = class { var name: String }
Solution
Step 1: Recall Swift syntax for class declaration
Classes in Swift are declared using the keyword class followed by the class name and braces.
Step 2: Check each option
class MyClass { var name: String } correctly uses class MyClass { var name: String }. struct MyClass { var name: String } uses struct, not class. func MyClass() { var name: String } uses func, which is incorrect. let MyClass = class { var name: String } uses invalid syntax.
Final Answer:
class MyClass { var name: String } -> Option B
Quick Check:
Class declaration uses 'class' keyword [OK]
Hint: Use 'class' keyword to declare a class in Swift [OK]
Common Mistakes:
Using 'struct' instead of 'class'
Trying to declare class inside a function
Incorrect syntax with 'let' or 'func'
3. What will be the output of this Swift code?
class Person {
var name: String
init(name: String) { self.name = name }
}
var p1 = Person(name: "Alice")
var p2 = p1
p2.name = "Bob"
print(p1.name)
medium
A. Bob
B. Alice
C. Compilation error
D. nil
Solution
Step 1: Understand class reference behavior
Classes are reference types, so p1 and p2 point to the same object.
Step 2: Analyze the code changes
Changing p2.name to "Bob" changes the shared object. Printing p1.name shows "Bob".
Final Answer:
Bob -> Option A
Quick Check:
Class variables share references, so name = Bob [OK]
Hint: Classes share instances; changing one changes all references [OK]
Common Mistakes:
Thinking p1 and p2 are independent copies
Expecting 'Alice' as output
Confusing class with struct behavior
4. Identify the error in this Swift code that tries to use inheritance with a struct:
struct Vehicle {
var speed: Int
}
struct Car: Vehicle {
var brand: String
}
medium
A. Cannot declare variables inside structs
B. Missing initializer in Car struct
C. Syntax error: colon should be replaced with comma
D. Structs cannot inherit from other structs or classes
Solution
Step 1: Understand inheritance rules in Swift
In Swift, only classes support inheritance. Structs cannot inherit from other structs or classes.
Step 2: Analyze the code
The code tries to make Car inherit from Vehicle, both structs, which is invalid.
Final Answer:
Structs cannot inherit from other structs or classes -> Option D
Quick Check:
Inheritance = classes only, structs no [OK]
Hint: Only classes support inheritance, not structs [OK]
Common Mistakes:
Thinking structs can inherit
Confusing initializer errors with inheritance
Misreading colon syntax as error
5. You want to create a data model where multiple parts of your app share and modify the same user profile data. Which Swift type should you choose and why?
hard
A. Use a class because it allows shared references and identity
B. Use a class because structs cannot store properties
C. Use a struct because it supports inheritance for flexibility
D. Use a struct because it copies data safely between parts
Solution
Step 1: Identify the need for shared data
The requirement is that multiple parts share and modify the same user profile data, meaning shared references are needed.
Step 2: Choose the correct Swift type
Classes are reference types that allow shared references and identity, so changes in one place reflect everywhere. Structs copy data, so changes do not propagate.
Final Answer:
Use a class because it allows shared references and identity -> Option A
Quick Check:
Shared data needs class reference type [OK]
Hint: Shared mutable data needs classes, not structs [OK]
Common Mistakes:
Choosing structs for shared mutable data
Thinking structs support inheritance
Believing classes cannot store properties
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.