метод вызова отличается от @selector в Objective-C - PullRequest
0 голосов
/ 10 августа 2010

Как мы вызываем метод, который находится в классе B из тега @selector класса A.

Могу ли я сделать это таким образом?

[tis_obj authenticate:self action:@selector([classB method]:)
              accName:@"BOOK" User:@"User"];

Есть ли возможность вызывать метод другой формы класса @ тег селектора ??или метод должен всегда быть в одном классе?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 10 августа 2010

Нет, ты не можешь. Чтобы вызвать -[classB method:], параметр authenticate: должен иметь экземпляр classB, например,

classB* b = [[clasB alloc] init];
[tis_obj authenticate:b action:@selector(method:) …];
self.b = b;
[b release];
2 голосов
/ 10 августа 2010

Похоже, вы хотите tis_obj использовать method селектор на classB. Я не уверен, что такое tis_obj, но я вижу, что вы передаете аргумент self. Возможно, вы действительно ищете:

[tis_obj authenticate:classB
               action:@selector(method:)
              accName:@"BOOK"
                 User:@"User"];

Это, вероятно, будет означать, что tis_obj в какой-то момент будет выполнять эквивалент [classB method:someArg].

1 голос
/ 10 августа 2010

То, что вы передаете @selector (), не имеет имени класса. Определение селектора - это просто имя метода, поэтому это будет работать:

[tis_obj authenticate:self action:@selector(method:)
          accName:@"BOOK" User:@"User"];

(если в вашем классе определено "method:")

1 голос
/ 10 августа 2010

Селектор это просто имя.Селектор в вызове метода [someObject foo:5] это просто foo:.Он не указывает метод или получателя, только имя.

...