Почему загрузка nib забирает мои категории? - PullRequest
0 голосов
/ 06 января 2012

Я расширил NSScrollView, чтобы он не переворачивался с категорией (по умолчанию он переворачивается).Затем я добавил NSScrollView в свое приложение с помощью Interface Builder.NSScrollView переворачивается.

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

И самое главное: как я могу изменить это поведение?Я не хочу, чтобы мои перья автоматически выбирали все категории, которые они могут найти, с другой стороны, иногда было бы удобно включать их.Но я всегда видел, что категории включаются, а не отключаются, так как это выглядит здесь.

Есть идеи?

1 Ответ

4 голосов
/ 06 января 2012

Категории относятся ко всему классу;все экземпляры NSScrollView ЛЮБОЕ в вашей программе подберут новое поведение.По этой причине, как правило, не стоит переопределять существующие методы в категории;вы изменяете поведение этого метода для всех пользователей класса, а не только для своих собственных экземпляров.

Таким образом, категории не являются ни подпиской, ни рассылкой;они абсолютные и первостепенные.Если категория скомпилирована в программу, то это повлияет на каждый экземпляр этого класса.Они не могут ни принять, ни отказаться;новое поведение принудительно навязывается им средой выполнения.Помните об этом при использовании категорий.

Если вы хотите изменить поведение для некоторых экземпляров, то вам следует создать подкласс NSScrollView (назовите его UnflippedScrollView или что-то в этом роде) и переопределить методтам.Затем используйте свой подкласс, где вам нужно развернутое представление прокрутки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...