Protocol의 문법에 대해서는 이미 설명한 바 있지만 Objective-C 2.0 에서 일부 개선이 되었다.
Objective-C 1.0에서는 클래스는 프로토콜에 선언된 메소드를 모두 구현할 필요가 있었다. 하지만 Objective-C 2.0에서부터는 필수 메소드와 선택적인 메소드를 선언할 수 있다. 아래에 소스코드의 예를 든다.
@protocol MyProtocol
- (void)requiredMethod; // 디폴트는 @required
@optional // 선택적 메소드
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;
@required // 필수 메소드
- (void)anotherRequiredMethod;
@end