Я расширил NSScrollView, чтобы не перевернуть категорию (по умолчанию она перевернулась). Затем я добавил NSScrollView в мое приложение с помощью Interface Builder. NSScrollView перевернут.Почему загрузка nib поднимает мои категории?
Как это может произойти? Я не включаю свою категорию в любой исходный файл в свой проект. Я только компилирую его, в котором, кажется, как-то хватит. И я сделал чистую сборку, чтобы быть в безопасности.
И самое главное: как я могу изменить это поведение? Я не хочу, чтобы мои перья автоматически выбирали все категории, которые они могут найти, с другой стороны, может быть удобно иногда включать их. Но я всегда видел категории как отказ, а не отказ, поскольку это, кажется, здесь.
Любая идея?
Просто чтобы подчеркнуть что-то из вопроса: «Я не включаю свою категорию в какой-либо исходный файл в свой проект. Я только компилирую его, в котором, кажется, как-то хватит ». Это точно верно. Если категория существует вообще в вашей программе, для которой единственным требованием является то, что она будет создана целевым объектом, то она влияет на класс во всей вашей программе, включая все экземпляры повсюду, в том числе в nib. –
Чтобы продвинуть этот момент еще дальше: никогда не переопределяйте существующий метод с категорией. Некоторые методы Apple framework сами реализуются в категориях. Если две категории реализуют один и тот же метод, поведение не определено. Переопределение должно выполняться в подклассах, а не в категориях. Категории предназначены для добавления новых методов, а не для переопределения существующих. –
Следующее по пункту Петра: категории относятся ко всем экземплярам класса с точки, в которую загружается категория (они эффективно применяются ретроактивно к существующим экземплярам). Это имеет значение в случаях, когда вы реализуете категорию в динамической библиотеке и загружаете ее вручную. Когда вы загружаете библиотеку, класс изменяется. Дело в том, что в принципе категории могут изменять классы в любой момент времени (не только при запуске приложения), что делает переопределение категории еще более недетерминированным. –