0

私はObjective-Cに比較的慣れていません。

rootViewController.m(これはnavigationControllerベースのアプリです)にこのようなものがあるWeb上のコードに到達しました。

@interface RootViewController (CManagerDelegate) <CManagerDelegate>
@end

@interface RootViewController (PViewDelegate) <PViewDelegate>
@end

2つの質問:

  1. rootViewController.mの先頭でこれらの行は何をしていますか
  2. これらの行はコードで何をしていますか?この特定のケースでは、括弧内と<>の間で内容を説明してください。

ありがとう。

4

2 に答える 2

3

一言で言えば、あなたが投稿したコードは、RootViewControllerクラスをいくつかのデリゲートプロトコルに非公開で準拠させます。

委任プロトコルは、別のクラスのオブジェクトからのメッセージを理解するという事実をクラスに宣言させるために使用されます。たとえば、ビュー コントローラーは、ジェスチャ レコグナイザーのデリゲート メッセージを理解することを宣言できます。

クラスがジェスチャ レコグナイザーを内部的に使用するという事実は、クラスの他のクライアントには関係のない実装の詳細であることがよくあります。この事実をパブリック インターフェイスで公開するのではなく、実装 (.m ファイル) に含めることをお勧めします。

カテゴリ (およびクラス拡張) を使用すると、まさにこれを行うことができます: main を変更せずに、クラスをプロトコルに準拠させます@interface

素敵でエレガントなソリューション!

于 2012-11-08T15:28:30.807 に答える
1

カテゴリを読む:

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

そしてプロトコル:

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/objectivec/chapters/ocProtocols.html

実際、先に進む前に、Apple の Objective-c のドキュメントをすべて読んでください。

http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/objectivec/Introduction/introObjectiveC.html

幸運を。

于 2012-11-08T15:11:11.270 に答える