Категории используются в Objective-C. для реализации расширений существующих классов.
Это отлично подходит для предоставления новых методов, которые можно было бы использовать, но не обязательно помогает улучшить поведение существующих методов класса.
В частности, я заинтересован в расширении методов init
и их настройке таким образом, чтобы необходимые настройки для моей категории выполнялись во время инициализации объекта. Если вы хотите знать, это сигналы ReactiveCocoa, которые я хотел бы настроить один раз за время существования объекта. В идеале это должно идти в init
.
Очевидный способ сделать это — вызвать метод setUpXYZExtension
, определенный в категории, непосредственно из init
. Однако это означает, что основной исходный файл теперь знает расширение. т. е. удаление исходного файла расширения приведет к ошибке компиляции, поскольку метод setUpXYZExtension
не будет найден.
Есть ли потенциально более аккуратный способ сделать это, например, чтобы при удалении исходного файла категории не было ошибки компиляции?
dispatch_once()
оживить их в+load
или+initialize
, если вы знаете, что сам объект также не реализует эти методы. - person CodaFi   schedule 20.05.2014