Селектор как вопрос о недвижимости - PullRequest
0 голосов
/ 05 декабря 2010

в моем классе у меня есть это свойство: @property SEL didStartRestoreSelector;, а затем синтезировать его как таковое @synthesize didStartRestoreSelector;.

В моем классе у меня есть следующая строка: [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:didStartRestoreSelector name:@"restoreHasStarted" object:nil];

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

USBBackupFramework*framework = [[USBBackupFramework alloc] init];
framework.didBeginBackupSelector = @selector(didBegin);

К сожалению, didBegin никогда не вызывают. Вместо этого консоль выводит это:

2010-12-05 20:27:24.376 Framework Test App[5228:a0f] -[USBBackupFramework <null selector>]: unrecognized selector sent to instance 0x10013f0d0

Хотя селектор не равен нулю, я его установил.

Почему это не работает?

1 Ответ

1 голос
/ 05 декабря 2010

Является ли строка addObserver: в методе init вашего класса?Если это так, то он будет использовать значение didStartRestoreSelector или didBeginBackupSelector, как оно существовало в тот момент времени (которое будет NULL).Любые изменения, внесенные после инициализации, не будут автоматически выбраны.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...