3

ヘッダー ファイルにはできるだけインポートしないようにして (代わりに実装ファイルを使用)、クラスには @class を使用できますが、プロトコルについてはどうでしょうか。@protocol を使用してそのヘッダーで使用するプロトコルを宣言しようとすると、「'...' のプロトコル定義が見つかりません」という警告が表示されます。

プロトコル宣言を行うヘッダーをインポートするだけでこれを処理する適切な方法はありますか? (したがって、1 つの .h ファイルが他の .h ファイルをインポートします)

ListViewController.h の例:

#import <UIKit/UIKit.h>
#import "JTRevealSidebarV2Delegate.h"  // is this the best way?

@class List;

@protocol JTRevealSidebarV2Delegate;  // this produces a warning.

@interface ListViewController : UIViewController <UITableViewDataSource, UITableViewDelegate, JTRevealSidebarV2Delegate>
4

3 に答える 3

5

が必要です#import@protocol型チェックを行うのに十分な情報をコンパイラに提供しません。

(タイプのプロパティを宣言するときList、知っておく必要があるのは、実際には意味がListなく、たとえば、Lispオブジェクトへのポインタは同じサイズではないということだけです。一方、プロトコルには、クラスが持つもののリストが含まれています何か役に立つことをするために「もの」が何であるかを知る必要があります。)

于 2013-01-15T11:55:11.603 に答える
3

正しいですが、気の利いたものにしたい場合は、プロトコルのみを宣言する単一の.hファイルをいつでも作成でき、プロトコルListViewControllerJTRevealSidebarV2Delegateインポートの両方を使用できます。

于 2013-01-15T11:55:22.860 に答える
1

手順

  1. protocol.h ファイルに @optional メソッドなどを宣言させる
  2. クラスAでprotocol.hをインポートしてメソッドを実装します。
  3. 任意の場所からプロトコルのメソッドを呼び出すには、calss A の obj の参照を使用します。
于 2013-01-15T11:58:24.863 に答える