デリゲートやデータソースなどのプロトコルを定義する際に、@requiredと@optionalという識別子を付けることができます。

@requiredは、プロトコルを使用する際に必ず実装しなければならないメソッド
@optionalは、任意で実装するメソッド

になります。

記述を省略すると@required扱いになります。

@protocol HogeProtocol

@required
- (NSString *)requiredMethod;
@optional
- (NSString *)optionalMethod;

@end

今までちゃんと定義していなくて、なにも処理を行わないメソッドが乱立していたので、これからはきちんと定義しようと思います。