Реализация пользовательского класса UITableViewController и избежание предупреждений делегатов - PullRequest
1 голос
/ 03 февраля 2012

Я пытаюсь сделать свою собственную версию UITableViewController в UIViewController (для дополнительной настройки). Так что в моем суперклассе я реализую делегат и источник данных и устанавливаю свойства делегата и источника данных UITableView на «this». Единственная проблема заключается в том, что я получаю предупреждение компилятора с жалобой на то, что я не реализовал обязательные методы dataSource и делегата. Я хотел бы иметь возможность реализовать эти методы, когда я создаю подкласс своего пользовательского UITableViewController.

Есть ли изящный способ убрать эти предупреждения, или это единственный способ для меня поместить пустые версии обязательных методов делегата и затем переопределить их в подклассе? Это плохая практика? У кого-нибудь есть понимание того, как Apple справляется с этим классом UITableViewController?

1 Ответ

3 голосов
/ 03 февраля 2012

Я использую этот шаблон для «абстрактных» методов:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    [self doesNotRecognizeSelector:_cmd];
    abort();
}

Переменная _cmd является селектором текущего метода.Он предоставляется автоматически, как и self.

. Вы должны вызвать abort(), потому что компилятор знает, что abort() не возвращается, но не знает, что о doesNotRecognizeSelector:. * 1011.*

По крайней мере в iOS 5 методы UITableViewController не пусты, потому что UITableViewController поддерживает загрузку предопределенных (статических) строк из раскадровки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...