본문 바로가기

Objective C 프로토콜3

objective c 프로토콜 3 - 비공식 프로토콜 objective c 프로토콜 3 - 비공식 프로토콜 공식 프로토콜은 고유한 이름을 가지며 @protocol [이름]을 가지고 선언된 프로토콜 중 클래스나 카테고리에 채용(상속)된 프로토콜을 뜻한다. 비공식 프로토콜은 NSObject 클래스에 추가된 카테고리 메소드를 뜻한다. 외형적으로 프로토콜 형식을 가지지 않는다. 이전 포스팅에서 NSObject 에 (Dummy)로 추가된 프로토콜 메소드는 비공식 프로토콜이라고 해야하나? 이 경우에는 프로토콜이다. 왜냐면 라는 프로토콜 이름을 가지고 있기 때문이다. 비공식 프로토콜이란 NSObject에 추가된 카테고리 메소드만을 뜻한다. 왜 이런 개념을 도입했나? 언제든지 선택적으로 메소드를 정의하거나 정의하지 않아도 되는 여분의 메소드 집합을 표현하기 위해서이다. .. 2020. 12. 31.
objective c 프로토콜 2 - 프로토콜의 채용, 상속 카테고리화 objective c 프로토콜 2 - 프로토콜의 채용, 상속 카테고리화 프로토콜은 가상메소드의 모음이며, 다중상속을 위해 태어났기 때문에, 채용되는 프로토콜 개수의 제한은 없다. 이럴 경우, 콤마로 구분하여 채용할 프로토콜을 여러개 나열하면 된다. @interface ClassWithProtocol : Ancestor 아래 예에서 클래스 ClassWithProtocol을 선언하는 과정에서 우선 Ancestor라는 클래스를 상속받고 있다. 이 Ancestor는 NSObject를 직접 또는 간접적으로 상속받을 것이다. ClassWithProtocol 클래스는 두개의 프로토콜 와 를 상속 받고 있다. 클래스의 상속은 단일 상속만 가능하지만 프로토콜의 상속은 다중상속이 가능하다. 위의 예는 클래스가 다중 프로토.. 2020. 12. 31.
objective c 프로토콜 1 objective c 프로토콜 1 이전 포스팅에서 알아본 카테고리와 가상 클래스, 가상 메소드는 한계가 있다. 즉, 카테고리와 가상 클래스는 선언되고 구현된 어떤 특정 클래스에만 영향을 미친다는 것이다. 카테고리는 특정한 클래스에 메소드를 추가하는 방법이고, 가상클래스는 objective c의 다형성을 이용하여 가상메소드로 전달된 명령을 각 서브클래스가 자신의 특성에 맞게 상세 명령으로 수행하는 방법이다. 위의 카테고리는 현재 클래스를 수평적으로 확장하는 역할을 하고, 가상함수는 현재 클래스를 수직적으로 확장하는 역할을 한다. 메소드 확장을 다중상속은? 메소드 확장을 통한 다중상속 개념을 구현하기 위해서는 서로 다른 클래스에 동일하게 적용할 수 있는 메소드 확장클래스 기법이 필요하다. 이를 위해 objc.. 2020. 12. 31.