Създадох свой собствен делегат за клас ObjC. Самият клас се занимава с операции с основни данни. Делегираните методи се използват за информиране на други класове за промени, настъпили в хранилището за данни. Класът, който се занимава с хранилището за данни, се нарича Datastore, а неговият делегат се нарича DatastoreDelegate. Моят UIViewController (ContactsViewController) имплементира делегата.
Моят DatastoreDelegate е деклариран, както следва:
@class Datastore;
@protocol DatastoreDelegate <NSObject>;
@optional
- (void)didAddMessage:(Message *)message;
- (void)didUpdateContact:(Contact *)contact;
- (void)didAddContact:(Contact *)contact;
- (void)didUpdateContact:(Contact *)contact;
- (void)didDeleteContacts;
@end
Странното е, че кодът ми работи добре с тези методи, с изключение на метода [didAddMessage:]. Всеки път, когато се опитам да извикам този делегат от класа Datastore, получавам грешка от ContactsViewController. Грешката ми казва, че селекторът [didAddMessage:] липсва в екземпляра на ContactsViewController (неразпознат селектор, изпратен до екземпляра). Как може селекторът да липсва, ако не е задължителен?
Трябва да отбележа, че моят клас Datastore е Singleton. Не съм сигурен дали това е свързано по някакъв начин с проблема, който имам.