- 프로토콜이란? 구현부 없이 헤더파일만 존재하는 상태로 프로토콜 내에 메소드만 정의되어 있는 형태를 의미하며, 자바의 Interface, C/C++의 virtual class 와 동일한 기능을 한다.
- 프로토콜 선언 방법프로토콜 선언
@protocol ProtocalName<NSObject>
-(void)method1;
@end - 프로토콜의 사용은 클래스가 프로토콜을 채택하여 프로토콜에 정의된 메소드를 구현한다.
- 아래는 클래스에서 프로토콜을 채택하는 방법이다.프로토콜 채택
// 헤더 파일에서 프로토콜 채택
@interface ClassName : NSObject <ProtocalName>
@end
// 구현파일에서 프로토콜 채택
@interface ClassName() <ProtocolName>
...
@end - 아래는 클래스에서 프로토콜을 채택하는 방법을 소스로 나타낸 예제이다.
- 클래스에서는 다수의 프로토콜을 채택하여 사용하는 것이 가능하며, 다수의 클래스에서 하나의 프로토콜을 채택해서 사용할 수도 있다.
- 아래는 클래스에서 다수의 프로토콜을 채택한 경우이다.다수의 프로토콜 채택
// 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 - 아래는 하나의 프로토콜을 다수의 클래스가 채택한 경우이다.다수의 클래스가 하나의 프로토콜 채택
// Protocol 1
@protocol Protocal<NSObject>
-(void)method1;
@end
// Protocol 1 채택
@interface ClassName1 : NSObject <Protocal>
...
@end
// Protocol 1 채택
@interface ClassName2 : NSObject <Protocal>
...
@end