Objective-C 프로토콜


  1. 프로토콜이란? 구현부 없이 헤더파일만 존재하는 상태로 프로토콜 내에 메소드만 정의되어 있는 형태를 의미하며, 자바의 Interface, C/C++의 virtual class 와 동일한 기능을 한다.
  2. 프로토콜 선언 방법
    프로토콜 선언
    @protocol ProtocalName<NSObject>
    -(void)method1;
    @end
    위와 같이 정의하고, 별도의 구현파일은 존재하지 않는다.
  3. 프로토콜의 사용은 클래스가 프로토콜을 채택하여 프로토콜에 정의된 메소드를 구현한다.
    1. 아래는 클래스에서 프로토콜을 채택하는 방법이다.
      프로토콜 채택
      // 헤더 파일에서 프로토콜 채택
      @interface ClassName : NSObject <ProtocalName>

      @end
      // 구현파일에서 프로토콜 채택
      @interface ClassName() <ProtocolName>
      ...
      @end
    2. 아래는 클래스에서 프로토콜을 채택하는 방법을 소스로 나타낸 예제이다.
  4. 클래스에서는 다수의 프로토콜을 채택하여 사용하는 것이 가능하며, 다수의 클래스에서 하나의 프로토콜을 채택해서 사용할 수도 있다.
    1. 아래는 클래스에서 다수의 프로토콜을 채택한 경우이다.
      다수의 프로토콜 채택
      // Protocol 1
      @protocol Protocal1<NSObject>
      -(void)method1;
      @end

      // Protocol 2
      @protocol Protocal2<NSObject>
      -(void)method2;
      @end

      // Protocol 1, 2를 모두 채택
      @interface ClassName : NSObject <Protocal1, Protocal2>
      ...
      @end
    2. 아래는 하나의 프로토콜을 다수의 클래스가 채택한 경우이다.
      다수의 클래스가 하나의 프로토콜 채택
      // Protocol 1
      @protocol Protocal<NSObject>
      -(void)method1;
      @end

      // Protocol 1 채택
      @interface ClassName1 : NSObject <Protocal>
      ...
      @end

      // Protocol 1 채택
      @interface ClassName2 : NSObject <Protocal>
      ...
      @end