5

この関数を使用して、プロトコルobjc_getProtocol()を表す構造体への参照を取得しようとしています。NSApplicationDelegate

Protocol *protocol = objc_getProtocol("NSApplicationDelegate");

ただし、何らかの理由で、これは常にを返しますNULL

、、、などの他のプロトコルはNSObject正常に機能します。NSCodingNSTableViewDelegateNSTableViewDataSource

何か特別なことはありますかNSApplicationDelegate、それとも私は何か間違ったことをしていますか?

4

1 に答える 1

2

Appleドキュメントで答えを見つけました:

http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html#//apple_ref/doc/uid/TP30001163-CH15

コンパイラは、検出したプロトコル宣言ごとにプロトコルオブジェクトを作成しますが、プロトコルが次の場合に限ります。

  • クラスに採用され、
  • または、ソースコードのどこかで参照されます(@protocol()を使用)
于 2012-05-29T20:03:33.207 に答える