Получение селектора из метода напрямую? NSSelectorFromMethod ([[SomeClass someObject] метод])? - PullRequest
1 голос
/ 10 августа 2009

Возможно ли это?

Ответы [ 3 ]

4 голосов
/ 15 августа 2009

Во время выполнения Objective C есть функция с именем " method_getName ", которая принимает объект Method и возвращает SEL.

1 голос
/ 17 октября 2009

В качестве альтернативы используйте:

NSSelectorFromString(@"myMethodName");
0 голосов
/ 10 ноября 2009

Ваш пример в шапке не совсем понятен.

Но здесь мы идем. Все селекторы для всех классов живут в одном и том же пространстве имен. Значение doFoo для класса Bar или doFoo для класса Baz будет одним и тем же уникальным селектором. Это означает, что вам не нужно беспокоиться о классе, чтобы получить селектор. Два хороших способа сделать это.

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
...