При разделении большого класса по категории, категория жалуется на необъявленный селектор
Я работаю над контроллером представления, который имеет длинный и ненадежный метод настройки представления. Для чистоты этот код установки вида перемещен в категорию, предназначенную только для настройки вида.
Эта категория ссылается на частные селекторы в оригинальном контроллере представления, и XCode показывает предупреждения: Undeclared selector 'xyz:'
Мне кажется, у меня есть эти варианты, ни один из которых не кажется хорошим:
- Оставь предупреждения, ГЛАЗА ЗАКРЫТА!
- Публично открывать частные селекторы, объявив в заголовочном файле
- Объявите вторую категорию, которая служит подкатегорией моей первой категории, в исходном заголовочном файле VC
Я выбрал последний вариант, но у меня все еще есть чувство, будто я должен пойти в туалет или что-то в этом роде. Каков оптимальный ход здесь?
1 ответ
Вы можете добавить объявление к приватному методу в вашей категории реализации
Так в CustomViewController+ViewSetup.m
@interface CustomViewController (private)
// declare private methods and properties here which you know exist in CustomViewController.m
@end
В целом, хотя, я думаю, что вы делаете с категорией не является необходимым. Вы можете очистить код в исходном файле и не нуждаться в файле категории для управления и обслуживания. Не говоря уже о том, что если вы измените какую-либо из этих сигнатур закрытых методов и забудете изменить ее в категории, компилятор не предупредит вас, и вместо этого вы увидите сбой при попытке вызвать один из этих методов.