2009-08-10 6 views

答えて

4

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

1

はまた、使用:ヘッダー内の

NSSelectorFromString(@"myMethodName"); 
0

あなたの例では、非常に明確ではありません。

しかし、ここに行きます。すべてのクラスのセレクタはすべて同じ名前空間に存在します。クラスBarの意味doFoo、またはクラスBazdoFooは、どちらも同じユニークなセレクタになります。つまり、セレクタを取得するためにクラスを気にする必要はありません。それを行う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 
関連する問題