Дублировать записи NSLog

2 biscuitstack [2011-04-30 22:46:00]

Я не знаю, могу ли я включить здесь код, который имеет значение, так как мой проект настолько велик, но есть ли какие-то типичные причины, по которым NSLog повторял бы некоторые предупреждения и звонки на него в случаях, когда только один вызов/ошибка возникает?

В качестве примера у меня есть подкласс NSBox, который содержит экземпляр другого класса в awakeFromNib:

- (void) awakeFromNib {
    burbControllerInstance = [[BurbController alloc] init];
    if (burbControllerInstance) {
        NSLog(@"init ok");
    }
}

Я получаю NSLog печать "init ok" дважды. Я не понимаю, почему этот подкласс будет "пробужден" дважды в любом месте моего проекта. Это часть более крупной проблемы, когда я не могу заставить переменные возвращать что-либо, кроме nil из класса, в котором я создаю экземпляр. Мне интересно, могут ли двойные значения что-то с этим делать.

objective-c cocoa nslog awakefromnib


1 ответ


3 Решение Sebastian Dressler [2011-04-30 23:37:00]

Этот пост может быть полезен, i. е. один комментарий:

Также важно: awakeFromNib может быть несколько раз на если вы используете тот же контроллер для нескольких наконечников - скажем, вы используете делегат приложения в качестве владелец обоих приложений о Box и диалог настроек. Поэтому вам понадобится дополнительный тест защиты, если вы используете awakeFromNib для чего угодно, кроме инициализация объектов nib

Обновление: Более интересным может быть this, где автор упоминает, что awakeFromNib получает вызов дважды. К сожалению, для этой конкретной проблемы нет реального ответа, но, возможно, некоторые основные идеи.

Обновление # 2: Еще одно потенциальное решение от stackoverflow.com: Просмотреть контроллер дважды вызывает awakeFromNib.