При разделении большого класса по категории, категория жалуется на необъявленный селектор

Я работаю над контроллером представления, который имеет длинный и ненадежный метод настройки представления. Для чистоты этот код установки вида перемещен в категорию, предназначенную только для настройки вида.

Эта категория ссылается на частные селекторы в оригинальном контроллере представления, и 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

В целом, хотя, я думаю, что вы делаете с категорией не является необходимым. Вы можете очистить код в исходном файле и не нуждаться в файле категории для управления и обслуживания. Не говоря уже о том, что если вы измените какую-либо из этих сигнатур закрытых методов и забудете изменить ее в категории, компилятор не предупредит вас, и вместо этого вы увидите сбой при попытке вызвать один из этих методов.

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