목록프로토콜 (7)
大器晩成
[생성자 요구사항] 클래스는 상속을 고려해야 하며, 생성자 앞에 required를 붙여야 합니다.구조체는 상속이 없기 때문에, required키워드가 따로 필요 없습니다.클래스의 final을 붙여서 상속이 없다는 것을 명시하면, required를 생략할 수 있습니다.클래스에서는 지정생성자 또는 편의생성자로 구현이 가능합니다.실제 프로젝트에서 사용하는 경우는 드뭅니다. Apple 공식문서protocol SomeProtocol { init(someParameter: Int)}class SomeClass: SomeProtocol { required init(someParameter: Int) { // initializer implementation goes here }}class..
프로토콜 속성의 요구사항프로토콜에 선언되는 프로퍼티에는 초기값을 할당할 수 없다.var로만 가능합니다. (let으로 선언 불가능)-> 개인적인 생각 ) 프로토콜은 선언만 할 뿐 값을 지정할 수 없기 때문에, let키워드를 사용하지 못하는 거 같다. let 초기값을 지정해야 하지만, var는 지정하지 않아도 되기 때문에, 프로토콜의 성격을 봤을 때 var 키워드만 사용하는 것이 많은 거 같다.또, 프로토콜에서는 함수를 정의할 때, private 키워드를 사용할 수 없고, 채택한 클래스나, 구조체에서 함수를 사용할 때에도 private 키워드를 사용할 수 없다. 이 또한 프로토콜의 성격과 맞지 않기 때문에 사용이 불가능한 거 같다. 프로토콜은 어느 곳에든지 채택만 하면 사용을 할 수 있어야 하는데, priv..
꼼꼼한 재은씨 문법편에 따르면, iOS는 특정 컨트롤러에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(delegate)를 지정하여 이벤트 처리를 위임하고, 실제로 이벤트가 발생하면 위임된 대리자가 콜백 메서드를 호출해 주는 델리게이트 패턴(Delegate Patter)을 많이 사용하는데, 이 패턴을 구현하기 위해 이용되는 것이 바로 프로토콜이다.라고 설명해 주지만 막상 잘 와닿지는 않습니다. 간단하게, 프로토콜을 직역하면, 규약, 협약(약속)의 개념으로 볼 수 있으며, 어떠한 요구사항을 정의한다. 정도의 개념을 가지고 시작해 보겠습니다. 우선 클래스나, 구조체도 있는데, 굳이 프로토콜을 왜 써야 할까?라는 의문점이 있을 텐데, 클래스의 상속을 기준으로 생각해 보면 쉽게 접근할 수 있습니다. ..