Bird
Raised Fist0
Swiftprogramming~5 mins

Protocol conformance in Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a protocol in Swift?
A protocol defines a blueprint of methods, properties, and other requirements that suit a particular task or piece of functionality. Classes, structs, or enums can adopt protocols to provide actual implementations.
Click to reveal answer
beginner
How do you declare that a Swift struct conforms to a protocol?
You add the protocol name after the struct name, separated by a colon. For example: struct MyStruct: MyProtocol { }
Click to reveal answer
beginner
What happens if a type does not implement all requirements of a protocol it claims to conform to?
The Swift compiler will give an error because the type does not fully conform to the protocol requirements.
Click to reveal answer
intermediate
Can a class conform to multiple protocols in Swift? How?
Yes, a class can conform to multiple protocols by listing them separated by commas after the class name. For example: <code>class MyClass: ProtocolA, ProtocolB { }</code>
Click to reveal answer
intermediate
What is the benefit of using protocol conformance in Swift?
It allows different types to share common behavior without inheritance, enabling flexible and reusable code. It also helps with abstraction and writing generic code.
Click to reveal answer
How do you declare that a Swift class conforms to a protocol named 'Drivable'?
Aclass Car inherits Drivable { }
Bclass Car implements Drivable { }
Cclass Car extends Drivable { }
Dclass Car: Drivable { }
What must a type do to conform to a protocol?
AImplement all the protocol's required methods and properties
BOnly declare the protocol name
CInherit from the protocol
DOverride the protocol's methods
Can a struct conform to a protocol in Swift?
ANo, only classes can conform
BOnly enums can conform
CYes, structs can conform to protocols
DProtocols cannot be conformed to
What symbol is used to separate multiple protocols in a conformance list?
A; (semicolon)
B, (comma)
C& (ampersand)
D| (pipe)
Why use protocols instead of inheritance?
AProtocols allow multiple conformances and more flexible design
BProtocols are slower than inheritance
CProtocols require less code
DProtocols replace functions
Explain how a Swift type conforms to a protocol and what happens if it does not implement all required members.
Think about the syntax and compiler checks.
You got /3 concepts.
    Describe the benefits of using protocol conformance in Swift programming.
    Consider how protocols help organize and share behavior.
    You got /5 concepts.

      Practice

      (1/5)
      1. What does it mean for a Swift type to conform to a protocol?
      easy
      A. It can only be a class, not a struct or enum.
      B. It inherits all properties and methods from the protocol automatically.
      C. It implements all required methods and properties defined by the protocol.
      D. It must override all methods from the protocol.

      Solution

      1. Step 1: Understand protocol requirements

        A protocol defines methods and properties that a type must implement to conform.
      2. Step 2: Check what conformance means

        Conforming means the type provides implementations for all required members.
      3. Final Answer:

        It implements all required methods and properties defined by the protocol. -> Option C
      4. Quick Check:

        Protocol conformance = Implement required members [OK]
      Hint: Conformance means implementing all required protocol parts [OK]
      Common Mistakes:
      • Thinking conformance means inheritance
      • Believing only classes can conform
      • Assuming methods must be overridden
      2. Which of the following is the correct syntax to declare that a struct conforms to a protocol named Drawable?
      easy
      A. struct Shape inherits Drawable { }
      B. struct Shape : Drawable { }
      C. struct Shape implements Drawable { }
      D. struct Shape extends Drawable { }

      Solution

      1. Step 1: Recall Swift syntax for protocol conformance

        Swift uses a colon (:) after the type name to declare protocol conformance.
      2. Step 2: Match syntax options

        Only struct Shape : Drawable { } uses the correct colon syntax for protocol conformance.
      3. Final Answer:

        struct Shape : Drawable { } -> Option B
      4. Quick Check:

        Protocol conformance syntax uses ':' [OK]
      Hint: Use ':' after type name to conform to protocol [OK]
      Common Mistakes:
      • Using 'implements' or 'inherits' keywords
      • Confusing inheritance with protocol conformance
      • Using 'extends' which is not Swift syntax
      3. What will be the output of this Swift code?
      protocol Greetable {
          func greet() -> String
      }
      
      struct Person: Greetable {
          func greet() -> String {
              "Hello!"
          }
      }
      
      let p = Person()
      print(p.greet())
      medium
      A. Hello!
      B. Error: Missing greet() implementation
      C. nil
      D. Hello! Person

      Solution

      1. Step 1: Check protocol and struct conformance

        The protocol requires a greet() method returning String. Person implements greet() returning "Hello!".
      2. Step 2: Analyze print output

        Calling p.greet() returns "Hello!", so print outputs that string.
      3. Final Answer:

        Hello! -> Option A
      4. Quick Check:

        Implemented greet() returns "Hello!" [OK]
      Hint: Implemented method returns string printed directly [OK]
      Common Mistakes:
      • Assuming missing implementation error
      • Expecting default protocol method output
      • Confusing print output with type description
      4. Identify the error in this Swift code that tries to conform to the Equatable protocol:
      struct Point: Equatable {
          var x: Int
          var y: Int
      }
      medium
      A. Missing implementation of == operator function
      B. Struct cannot conform to Equatable
      C. Properties must be constants (let) to conform
      D. No error, code compiles fine

      Solution

      1. Step 1: Understand Equatable conformance rules

        Swift automatically synthesizes == for structs with Equatable properties.
      2. Step 2: Check struct properties and conformance

        Both x and y are Int (Equatable), so compiler provides == automatically.
      3. Final Answer:

        No error, code compiles fine -> Option D
      4. Quick Check:

        Automatic Equatable synthesis = No error [OK]
      Hint: Swift auto-synthesizes Equatable for simple structs [OK]
      Common Mistakes:
      • Thinking manual == is always needed
      • Believing structs can't conform
      • Assuming properties must be let
      5. Given this protocol and struct, how can you modify Vehicle to conform to CustomStringConvertible and print a description?
      protocol CustomStringConvertible {
          var description: String { get }
      }
      
      struct Vehicle {
          var make: String
          var model: String
      }
      hard
      A. Add extension Vehicle: CustomStringConvertible { var description: String { "\(make) \(model)" } }
      B. Add func description() -> String { return "\(make) \(model)" } inside Vehicle
      C. Add var description: String = "\(make) \(model)" inside Vehicle
      D. Add override var description: String { "\(make) \(model)" } inside Vehicle

      Solution

      1. Step 1: Understand protocol property requirement

        CustomStringConvertible requires a read-only computed property 'description' of type String.
      2. Step 2: Implement description correctly

        Implementing description as a computed property in an extension is the correct way.
      3. Final Answer:

        Add extension Vehicle: CustomStringConvertible { var description: String { "\(make) \(model)" } } -> Option A
      4. Quick Check:

        Computed property in extension = Correct conformance [OK]
      Hint: Use computed property in extension for protocol conformance [OK]
      Common Mistakes:
      • Trying to add description as a method
      • Using stored property instead of computed
      • Using override keyword in struct
      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