0

私も次のことを試みています。

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");

ここに見られるように:

objc_getProtocol()は `NSApplicationDelegate"に対してNULLを返しますか?

受け入れられた答えは、私が次のいずれかを実行していないため、NULLを返していることを示しています。

  • クラスに採用され、
  • または、ソースコードのどこかで参照されています(を使用して@protocol()

@protocol実行時にこれを実行するので、問題外ですよね?これで、プロトコルをクラスに追加することになります。BOOL class_addProtocol(Class cls, Protocol *protocol)

しかし、プロトコルがまだ作成されていないときに、どうすればプロトコルをクラスに追加できますか?

言い換えれば、私はしなければならないようです:

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");
BOOL class_addProtocol(class, protocol);

しかし、最初の行はNULLを返します...

4

2 に答える 2

0

この「パート 2」の質問に対する回答は、元の質問に対する回答と同じです。ドキュメントには次のように記載されています。

宣言されているが使用されていないプロトコル (以下で説明する型チェックを除く) は、実行時にプロトコル オブジェクトによって表されません。

が存在しないため取得できませProtocolん。

于 2012-07-06T07:54:05.687 に答える