Почему переменные, инициализированные в viewDidLoad, не сохраняют значение в Objective-C? - PullRequest
0 голосов
/ 06 августа 2010

У меня есть класс, который я написал, который называется Location, который содержит несколько строк.Я использую два экземпляра этого класса в контроллере представления, и когда я инициализирую две переменные в viewDidLoad, они прекрасно работают для этого метода, но затем, когда я пытаюсь использовать их позже, они равны нулю.Я установил их как сохраненные свойства.Я проверил их и знаю, что они инициализированы для viewDidLoad (я использую их поля в представлении).Нужно ли делать что-то особенное в классе Location, чтобы они не были освобождены?Когда я заново инициализирую их другим способом, все идет гладко.

Ответы [ 2 ]

1 голос
/ 06 августа 2010

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

0 голосов
/ 06 августа 2010

Вы (или цикл событий), вероятно, освобождают объекты, которые вы инициализируете после завершения viewDidLoad, поскольку они автоматически высвобождаются или что-то в этом роде. Чтобы предотвратить это, задайте для рассматриваемых переменных свойства класса с атрибутом «retain» и установите для них значение nil в dealloc.

...