【发布时间】:2010-10-21 13:52:07
【问题描述】:
我想弄清楚在哪些情况下我需要关心属性方面的内存管理。我从一个我不记得的网站上写下了一些东西,他们说如果一个属性有除 NSNumber 或 NSValue 以外的任何值,并且如果它没有设置器,那么 UIKit 将自动释放旧值并保留新值。虽然我不明白为什么 UIKit 会在没有设置器的情况下设置任何东西(我猜是直接设置值)。
【问题讨论】:
标签: objective-c iphone memory-management
我想弄清楚在哪些情况下我需要关心属性方面的内存管理。我从一个我不记得的网站上写下了一些东西,他们说如果一个属性有除 NSNumber 或 NSValue 以外的任何值,并且如果它没有设置器,那么 UIKit 将自动释放旧值并保留新值。虽然我不明白为什么 UIKit 会在没有设置器的情况下设置任何东西(我猜是直接设置值)。
【问题讨论】:
标签: objective-c iphone memory-management
您应该(重新)阅读Memory Management Guide for Cocoa。属性的内存管理规则与所有其他对象相同。
【讨论】:
如果属性声明为:
@property(retain) NSString *prop;
当你分配一个新值时它会释放旧值。
但是,请确保在您的 dealloc 方法中也释放它:
- (void)dealloc {
[prop release];
[super dealloc];
}
【讨论】: