This program defines a protocol Greetable with a greet() function. The Person class adopts it and implements greet() to say hello with a name.
iOS Swift
protocol Greetable {
func greet()
}
class Person: Greetable {
var name: String
init(name: String) {
self.name = name
}
func greet() {
print("Hello, my name is \(name)")
}
}
let person = Person(name: "Anna")
person.greet()
OutputSuccess
Important Notes
Protocols do not contain code, only the rules to follow.
Use protocols to write flexible and reusable code.
Multiple protocols can be adopted by one class or struct.
Summary
Protocols define a blueprint of methods and properties.
Classes, structs, and enums can adopt protocols by implementing required parts.
Protocols help keep code organized and flexible.
Practice
(1/5)
1. What is the main purpose of a protocol in Swift?
easy
A. To create a new class with default behavior
B. To define a blueprint of methods and properties that a type must implement
C. To store data persistently on the device
D. To handle user interface layout automatically
Solution
Step 1: Understand what a protocol defines
A protocol specifies methods and properties that a type must implement, acting as a blueprint.
Step 2: Differentiate from other concepts
Protocols do not create classes or store data; they only define requirements.
Final Answer:
To define a blueprint of methods and properties that a type must implement -> Option B
Quick Check:
Protocol purpose = blueprint [OK]
Hint: Protocols define required methods and properties [OK]
Common Mistakes:
Confusing protocols with classes
Thinking protocols store data
Assuming protocols handle UI layout
2. Which of the following is the correct syntax to declare a protocol named Drivable in Swift?
C. Error: Athlete does not implement required method run()
D. Error: Protocol Runnable cannot be adopted by struct
Solution
Step 1: Check protocol requirements
The protocol Runnable requires a method run() with no return value.
Step 2: Verify struct conformance
The struct Athlete adopts Runnable but does not implement run(), causing a compile error.
Final Answer:
Error: Athlete does not implement required method run() -> Option C
Quick Check:
Missing required method causes error [OK]
Hint: All protocol methods must be implemented [OK]
Common Mistakes:
Assuming structs can't adopt protocols
Thinking missing method is allowed
Expecting run() to require return type
5. You want to create a protocol Vehicle with a property speed that can be read and set. Which of these protocol declarations is correct?
hard
A. protocol Vehicle { var speed: Int { get set } }
B. protocol Vehicle { var speed: Int }
C. protocol Vehicle { func speed() -> Int }
D. protocol Vehicle { let speed: Int }
Solution
Step 1: Understand property requirements in protocols
To require a property to be readable and writable, use { get set } in the protocol.
Step 2: Analyze each option
protocol Vehicle { var speed: Int { get set } } correctly declares speed as a variable property with get set. protocol Vehicle { var speed: Int } misses get set, so it's read-only. protocol Vehicle { func speed() -> Int } declares a method, not a property. protocol Vehicle { let speed: Int } uses let, which is not allowed in protocols.
Final Answer:
protocol Vehicle { var speed: Int { get set } } -> Option A
Quick Check:
Writable property = var with get set [OK]
Hint: Use 'var' with { get set } for read-write properties [OK]
Common Mistakes:
Using 'let' in protocol properties
Omitting { get set } for writable properties
Confusing methods with properties
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.