Установка значений свойств, не придерживающихся / viewDidLoad, вызываемый многократно в Xcode 4.3 - PullRequest
2 голосов
/ 20 февраля 2012

Так что это странно.

У меня есть свойство:

@property (weak, nonatomic) Something *something; // .h
@synthesize something=_something                  // .m

По какой-то причине установка этого свойства не поддерживает _something.

Я даже написал сеттер:

- (void)setSomething:(Something *)something {
    _something = something;
}

Переданный something является допустимым экземпляром объекта.Однако после перехода через строку _something = something, _something - ноль, а something - все еще действительный объект.

Это сводит меня с ума, потому что все выглядит правильно для меня.Я написал такую ​​же вещь тысячу раз.Единственное, что является новым, это то, что это в Xcode 4.3.

Любая помощь будет принята с благодарностью.Спасибо!

ETA: Так, возможно, это подсказка?viewDidLoad вызывается целой кучей раз, партиями по 4. Я использую раскадровки, поэтому представление автоматически устанавливается правильно.Может быть, контроллер представления не загружается должным образом или инициализируется или что-то?У меня есть набор классов, и все выглядит так, как будто оно должно работать, но это не так.

Ответы [ 2 ]

4 голосов
/ 20 февраля 2012

ОК, я понял это. Я не уверен, откуда появился этот метод, но это было в коде SomethingViewControler:

- (void)loadView {
    // If you create your views manually, you MUST override this method and use it to create your views.
    // If you use Interface Builder to create your views, then you must NOT override this method.
}

Поскольку я использую раскадровки, само присутствие этого метода вызывало всевозможные проблемы. Я довольно смущен, потому что я, вероятно, скопировал это и вставил это откуда-то, не думая об этом.

Во всяком случае, я надеюсь, что это кому-то поможет. Это убило только большую часть моего дня.

0 голосов
/ 20 февраля 2012

Может быть, объект, который вы назначаете этому свойству, нигде не указан.Таким образом, после назначения единственным указателем на этот объект является ваше свойство, и оно week , поэтому объект выбрасывается из кучи

...