Я создал свой собственный делегат для класса ObjC. Сам класс имеет дело с операциями Core Data. Методы делегата используются для информирования других классов об изменениях, произошедших с хранилищем данных. Класс, который работает с хранилищем данных, называется 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 (неопознанный селектор отправлен в экземпляр). Как селектор может отсутствовать, если он необязателен?
Я должен отметить, что мой класс хранилища данных является синглтоном. Я не уверен, что это как-то связано с моей проблемой.