[야곰] Swift 개념정리 - Protocols

7102 단어 swift야곰swift

Protocol

1. 프로토콜의 정의

프로토콜은 특정 작업이나 기능적으로 구현해야 할 메서드, 프로퍼티 그 외 요구사항을 정의한 청사진이다.

protocol ProtocolName{
	// 요구사항 정의
}

타입에서 필요한 프로토콜을 채택(Adopted)하고 채택한 프로토콜을 준수(conform)하게 된다.


2. 프로토콜 구현

protocol Talkable{
	var topic: Strig{ get set}
    var language: String{ get }
    func talk()
    init(topic: String, language: String)
}
  • 요구사항은 모두 var 타입이다.
  • 구현해야할 기능을 제시하는 것이지 직접 구현 ❌

3. 프로토콜 채택 및 준수

struct Person : Talkable{
	var topic: String
    let language: String
    
    func talk(){
    	print("\(topic)에 대해 \(language)로 말합니다")
    }
    
    init(topic: String, language: String){
    	self.topic = topic
        self.language = language
    }
}
  • 타입 뒤에 [ : ]을 붙이고 채택하려는 프로토콜의 이름을 쓴다
  • 읽기 전용으로 정의된 요구사항은 let으로 구현 가능 (물론 var도 가능)
  • 채택한 프로토콜의 요구사항은 반드시 모두 구현해야 한다

4. 프로토콜 상속

protocol Readable{
	func read()
}

protocol Writeable{
	func write()
}

protocol ReadWriteSpeakable: ReadAble, Writeable{
	func speak()
}

struct Human: ReadWriteSpeakable{
	func read(){
    	//read 구현
    }
    func write(){
    	//write 구현
    }
    func speak(){
    	//speak 구현
    }
}
  • 프로토콜은 상속이 가능하며 클래스와 다르게 다중상속도 가능
  • 클래스와 함께 상속 가능 ( 클래스, 프로토콜 순서로 써줘야 함)

5. 프로토콜 준수 확인

  • is, as 연산자로 어떤 프로토콜을 준수하고 있는지 확인가능

채택한 프로토콜을 통해 타입이 어떤 기능을 수행해야 하는지 명확히 알 수 있고, 채택한 프로토콜만 봐도 이 타입이 어떤 기능을 수행하고 있는지 확연히 알 수 있다.





Swift - Protocols

좋은 웹페이지 즐겨찾기