Установить значения по умолчанию для глобальной переменной в пользовательском классе? - PullRequest
0 голосов
/ 23 февраля 2009

У меня есть собственный класс, который имеет довольно много методов доступа для его настройки. Мой вопрос: если программист использует этот класс и не удосуживается присвоить значения для ВСЕХ этих методов, потому что он не знает о них или не хочет беспокоиться, как я могу заставить класс принять представление по умолчанию? Я не могу использовать awakeFromNib, потому что это переопределит целенаправленную настройку, скажем, в AppController awakeFromNib.

Есть ли простой способ сделать это?

EDIT:

Класс в NSView и методы настройки просто изменяют переменную экземпляра, а затем передают представление для перерисовки (цвет фона и т. Д.). Когда я явно не говорю объекту где-то назначить значения для ВСЕХ этих настроек, он устанавливает их на ноль. Мне нужно изменить это, где они принимают используемые значения по умолчанию.

Ответы [ 2 ]

1 голос
/ 23 февраля 2009

Я не понимаю, что вы пытаетесь сделать. Если вы хотите установить значения по умолчанию для членов класса, просто присвойте им один из методов init:

- (id) init
{
    if((self = [super init]))
    {
        member1 = member1default;
        member2 = member2default;  // etc.
    }
    return self;
}

- (id) initWithCoder:(NSCoder *)encoder  // this is called for objects constructed from a NIB
{
    if((self = [super initWithCoder:encoder]))
    {
        member1 = member1default;
        member2 = member2default;  // etc.
    }
    return self;
}
0 голосов
/ 24 июля 2009

(Извините за то, что я новичок в StackOverflow; я не могу пока комментировать ответы других людей.)

Да, вы обычно переопределяете initWithFrame в пользовательском подклассе NSView. Убедитесь, что вы вызываете initWithFrame: метод суперкласса:

self = [super initWithFrame:frameRect];

Сообщение об ошибке при загрузке большого количества кадров стека заставляет меня думать, что вы могли случайно создать бесконечный рекурсивный цикл. Однако, не видя код, я не могу сказать наверняка.

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