开发者

Why do variables initialized in viewDidLoad not retain value in Objective-C?

开发者 https://www.devze.com 2023-01-10 22:35 出处:网络
I have a class I wrote called Location that just holds some strings.I\'m using two instances of that class in a view controller, and when I initialize the two variables in viewDidLoad, they work fine

I have a class I wrote called Location that just holds some strings. I'm using two instances of that class in a view controller, and when I initialize the two variables in viewDidLoad, they work fine for that method, but then when I try to use them later they are null. I have them set as retained properties. I have tested them and know that they are initialized for viewDid开发者_如何学GoLoad (I use their fields in the view). Do I have to do something special in the Location class to make sure they don't get released? When I re-initialize them in a different method, everything runs smoothly.


Instance variables properly initialized in viewDidLoad should retain values normally just like they would in any other method. A coding error may cause the issue you are describing, e.g. if you have local variables in viewDidLoad hiding identically named instance variables.


you (or the event loop) is probably releasing the objects you are initializing after viewDidLoad is complete since they are autoreleased or something. To prevent that, make the variables in question properties on the class with the "retain" attribute and set them to nil on dealloc.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号