minaje

Protocol? 본문

iOS/기초 지식

Protocol?

minaje 2023. 10. 17. 09:53

IOS 로드맵을 살펴보다 보면 POP(Protocol Oriented Programming) 즉 프로토콜 지향 프로그래밍이 나온다. 

그러면 여기서 나오는 프로토콜이란 무엇일까? 한 번 알아보도록 하자!

Protocol이 뭐야?

POP를 공부하기 앞서 반드시 알아야하는 Protocol에 대해 알아보자

공식문서를 살펴보면

프로토콜은 특정 작업이나 기능에 적합한 메서드, 속성 및 기타 요구사항에 대한 청사진을 정의합니다.

어... 이게.. 무슨 말이지.. 싶지만! 쉽게 말하자면 요구 사항에 필요한 프로퍼티나 메서드를 미리 선언해두는 추상적인 친구 정도가 되겠네요!

 

Protocol 선언 방법

프로토콜은 class, sturct, enum과 비슷하게 선언할 수 있다.

protocol ExampleProtocol {

}

그럼 채택할 때는? 

struct SomeStructure: FirstProtocol, AnotherProtocol {

}


프로토콜을 채택하고 싶을때는 타입의 이름뒤에 프로토콜의 이름을 쓰면된다.
여러 프로토콜을 나열할 수 있으며 쉼표로 구분한다.

클래스에 슈퍼 클래스가 있으면!

class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {

}


간단하게 슈퍼클래스의 이름을 나열하고 그 뒤에 프로토콜을 채택하면된다.

 

Protocol에서 Property 정의

protocol에서 property를 정의하려면 var로 해야한다(let 불가능)
protocol에선 property가 저장프로퍼티인지 연산프로퍼티인지 명시하지 않습니다.
하지만 프러퍼티의 이름과 타입 그리고 gettable한지 settable한지는 명시한다.

메소드 요구사항

Protocol에서는 인스턴스 메소드와 타입 메소드를 명시할 수 있지만!
Protocol안에서 사용하지 못한다.