Протокол не отвечает на селектор

У меня проблема с протоколами 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сообщение не будет отправлено, и вы не получите никаких ошибок во время выполнения.

Другие вопросы по тегам