[iOS][Swift] 프로토콜(Protocol) 이해하기

Jay·2023년 7월 27일
0

iOS

목록 보기
7/47

Swift의 프로토콜(Protocol)은 특정 메서드, 프로퍼티, 그리고 다른 특정 요구 사항들을 정의한 청사진 혹은 규약입니다. 이는 클래스, 구조체, 열거형이 이러한 프로토콜을 채택(Adopt)하고 해당 프로토콜의 요구 사항들을 구현하게끔 합니다.

프로토콜의 사용 사례:

1. 특정 함수를 필수로 구현하도록 강제:

프로토콜을 채택한 모든 타입이 특정 함수를 구현하도록 강제할 수 있습니다. 이는 특히 디자인 패턴을 적용할 때 유용합니다.

2. 특정 프로퍼티가 필수로 있어야 함을 명시:

프로토콜을 사용하여 클래스, 구조체, 열거형이 반드시 가지고 있어야 하는 프로퍼티를 지정할 수 있습니다.

3. 특정한 타입으로 제한:

함수나 메서드에서 특정 프로토콜을 채택한 타입을 인수로 받아들이거나 반환하도록 제한할 수 있습니다. 이는 특정한 동작을 보장하는 코드를 작성할 수 있도록 도와줍니다.

Swift에서 프로토콜 적용하기 예시 :

// 프로토콜 정의
protocol Animal {
    var name: String { get set }
    func makeSound() -> String
}

// 프로토콜 채택 및 구현
class Dog: Animal {
    var name: String

    init(name: String) {
        self.name = name
    }

    func makeSound() -> String {
        return "Bark!"
    }
}

let myDog = Dog(name: "Fido")
print(myDog.makeSound())  // 출력: Bark!

위의 코드에서 Animal이라는 프로토콜을 정의하였고, 이 프로토콜은 name이라는 문자열 프로퍼티와 makeSound()라는 메서드를 요구합니다. 그리고 Dog이라는 클래스가 이 프로토콜을 채택하여 요구사항을 모두 충족시키는 형태로 구현하였습니다.

Protocol의 특징 :

  • class, structure, enum이 프로토콜을 ‘채택’하고 모든 요구사항을 충족하면 프로토콜을 ‘준수’했다고 합니다.
  • class, structure, enum이 프로토콜을 채택해서 특정 기능을 실행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있습니다.
  • 프로토콜은 설계된 조건만 정의를 하고 제시를 할 뿐 스스로 기능을 구현하지 않습니다.
  • 프로토콜에서는 이름과 타입 그리고 gettable, settable을 명시합니다.
  • 프로퍼티는 항상 var로 선언해야 합니다.
  • 메서드를 정의할 때 메서드 이름과 리턴값을 지정할 수 있고, {}(구현 코드)는 적지 않습니다.
profile
Junior Developer

0개의 댓글