2012-04-03 3 views

ответ

1

Из документации Apple:

в performSelector: метод позволяет отправлять сообщения, которые не являются не определены до момента выполнения

Longer история:

Вы можете отправлять сообщения на объекты без предварительного знания того, реализует ли этот объект этот конкретный метод. Например:

NSString *astring = @"test"; 

[test dance]; // Doesn't compile 
[test performSelector:@selector(dance)]; // Doesn't make sense but compiles 
+0

спасибо .. thats имеет смысл .. вы могли бы привести мне пример того, где я бы использовал performSelector для объекта, который реализует метод? – learner2010

+1

Например, если вы хотите выполнить метод в фоновом режиме: '[self performSelectorInBackground: @selector (myMethod) withObject: nil];' – Alladinian

+0

спасибо за ответ. поэтому, когда я буду использовать performSelector по сравнению с просто вызовом метода? – learner2010

0

AFAIK, используя селектор является способом объявить callback method как то, что мы делали на Java, C#, ... Предположим, что вы разрабатываете библиотеки A, которые делают асинхронный исчисляют и возвращать результат всегда, когда это было сделано. Во время разработки вы не знаете, какой метод обратного вызова вы должны вызывать, когда делается расчет. Таким образом, вы можете сделать библиотеку в качестве входного параметра selector и позже использовать метод performSelector для вызова методов обратного вызова.

Надеюсь, это поможет.