web-dev-qa-db-ja.com

カテゴリはObjective Cでプロトコルを実装できますか?

NSDateにカテゴリがあり、以前に作成したプロトコルを実装できると便利です。これは可能ですか?これの正しい構文は何ですか?

85
cfischer

はい、可能です。構文は次のとおりです。

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

トピックに関する Appleのドキュメント を参照してください。

クラス拡張を使用してこれを行うこともできます。委任プロトコルに個人的に準拠することは非常に気に入っています。そうすることで、パブリックインターフェイスからクラスのデリゲートであるという実装の詳細が隠され、ヘッダーから依存関係が削除されます。

141
Nikolai Ruhe