Я немного озадачен и работаю над этим часами и гуглю без всяких реальных подсказок.Я хочу создать обратный вызов в target-c для моего приложения для iPhone, используя селектор @.
Класс 1:
- (void) someMethod {
// create selector
SEL successCallback = @selector(successMethod);
// call some service with caller and selector
[class2 dispatchSomeEvent:self callback:successCallback];
// here's the call back method
- (void) successMethod {
NSLog(@"Callback success");
}
}
Класс 2:
// some event
- (void) dispatchSomeEvent:(id) caller selector:(SEL) successCallback {
// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successCallback];
}
}
условный responsedsoSelector пройдет, но обратный вызов на следующей строке не удастся.ОДНАКО, если бы я сделал так:
// catch the event and execute callback
if ([caller respondsToSelector:successCallback]) {
[caller successMethod];
}
Поэтому вместо того, чтобы использовать селектор, который я передал, я ввожу имя метода напрямую ... и оно работает!
Ошибка Iget is this:
нераспознанный селектор отправлен в экземпляр 0x6c37f70
Что здесь происходит ??
Заранее спасибо!