Протокол не отвечает на селектор
У меня проблема с протоколами Objective-C.
Я определил протокол:
@protocol PlayerProfileSectionProReviewDelegate <NSObject>
- (void)didReceivedPlayerProfileSectionProReviewData;
@end
@interface PlayerProfileSectionProReviewModel : PlayerProfileSectionModel
@property (weak) id <PlayerProfileSectionProReviewDelegate> playerProfileSectionProReviewDelegate;
@end
В этой реализации класса я вызываю делегат:
if ([self.playerProfileSectionProReviewDelegate respondsToSelector:@selector(didReceivedPlayerProfileSectionProReviewData)])
{
[self.playerProfileSectionProReviewDelegate didReceivedPlayerProfileSectionProReviewData];
}
В поле зрения контроллера я добавил PlayerProfileSectionProReviewDelegate
и переопределить didReceivedPlayerProfileSectionProReviewData
метод:
@interface PlayerProfileSectionProReviewViewController : PlayerProfileSectionViewController <UITableViewDelegate, UITableViewDataSource, PlayerProfileSectionProReviewDelegate>
@end
а также
#pragma mark <PlayerProfileSectionProReviewDelegate>
- (void)didReceivedPlayerProfileSectionProReviewData
{
[self.playerProReviewTableView reloadData];
}
Почему мой протокол не отвечает на селектор?
1 ответ
Решение
Где-то в вашем PlayerProfileSectionProReviewViewController
Реализация класса, вам нужно установить соответствующий PlayerProfileSectionProReviewModel
делегат объекта, вот так:
myModel.playerProfileSectionProReviewDelegate = self;
Если вы сделаете это, то когда myModel
достигает вашего делегата вызова, ваш контроллер представления получит его.
Кстати, вы можете упростить эти строки:
if ([self.playerProfileSectionProReviewDelegate respondsToSelector:@selector(didReceivedPlayerProfileSectionProReviewData)])
{
[self.playerProfileSectionProReviewDelegate didReceivedPlayerProfileSectionProReviewData];
}
С:
[self.playerProfileSectionProReviewDelegate didReceivedPlayerProfileSectionProReviewData];
На данный момент, если делегат nil
сообщение не будет отправлено, и вы не получите никаких ошибок во время выполнения.