1

出来ますか?

4

3 に答える 3

4

Objective-C ランタイムには、メソッド オブジェクトを受け取り、SEL を返す「 method_getName 」という関数があります。

于 2009-08-15T19:04:51.237 に答える
0

ヘッダーの例は明確ではありません。

しかし、ここに行きます。すべてのクラスのすべてのセレクターは、同じ名前空間に存在します。doFooclass Bar、またはdoFooclassでの意味は、Baz両方とも同じ一意のセレクターになります。これは、セレクターを取得するためにクラスを気にする必要がないことを意味します。それを行うための2つの良い方法。

NSSelectorFromString(@"doFoo");  // If you have the selector name as a string.
@selector(foFoo);  // If it is selector constant inlined in your code.

あなたの質問は、メソッドからセレクターを返す方法にも言及している可能性があります。セレクターは obj-c の第一級市民であるため、それらを任意の変数として渡し、メソッドから返すことができます。セレクターの型はSEL.

-(SEL)selectorFromFoo:(Foo*)aFoo;  // Declare a method returning a selector.

SEL sel = [myBar selectorFromFoo:myFoo];    // Get a selector.
[myBar proformSelector:sel withObject:nil]; // Perform this selector
于 2009-11-10T15:19:08.127 に答える