Ваш пример в шапке не совсем понятен.
Но здесь мы идем. Все селекторы для всех классов живут в одном и том же пространстве имен. Значение 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