Возможно, это не лучший способ сделать это, но я видел, что большинство людей, использующих делегаты, используют следующий шаблон:
if ([delegate respondsToSelector:@selector(yourMethod)]) {
[delegate performSelector:@selector(yourMethod)];
}
Вы можете добавить аргументы, используя executeSelector: withObject: и есть также методыпозволяя вам выполнять селектор в других потоках.
У вас не будет никаких ошибок, если вы объявите своего делегата как
id delegate;
или
NSObject<DelegateProtocol> * delegate;