Описание опций -Wselector
и -Wundeclared-selector
в GCC заставляет их звучать как прекрасные инструменты программирования для защиты от опечаток в выражениях Objective-C @selector()
.Я получаю такие предупреждения:
Unimplemented selector 'reloadData'
, указывающие на такие строки:
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
Эта строка кода довольно распространена в нашей кодовой базе.Данные загружаются асинхронно, и после загрузки указанная выше строка кода используется для сигнализации UITableView
о перезагрузке (в основном потоке, поскольку вызов UIKit из фоновых потоков - плохая идея).
Мой вопрос состоит из нескольких частей:
- Является ли приведенная выше строка кода неверной?Есть ли лучший шаблон для сигнализации
UITableView
в главном потоке для перезагрузки своих данных? - Почему GCC предупреждает об этом, когда в
UITableView.h
явно есть объявление для селектора reloadData
? - Есть ли способ заставить GCC предупреждать о необъявленных селекторах, не заставляя его жаловаться на селекторы, которые явно объявлены?