【发布时间】:2011-05-06 18:31:48
【问题描述】:
关于释放属性,我在 iOS 中看到了几种不同的内存管理方法。在与同事讨论了一番之后,利弊在我的脑海中变得模糊不清。
我希望获得一个利弊总结,这将使我自己和其他人能够轻松地选择默认方法,同时仍然了解何时进行例外处理。以下是我见过的 3 种变体:
假设@property (nonatomic, retain) MyObject *foo;
// Release-only. Seems to be the favored approach in Apple's sample code.
- (void)dealloc {
[foo release];
[super dealloc];
}
// Property accessor set to nil.
- (void)dealloc {
self.foo = nil;
[super dealloc];
}
// Release, then nil.
- (void)dealloc {
[foo release];
foo = nil;
[super dealloc];
}
如果您要添加不同的变体,请在此处发表评论,我将编辑操作。
【问题讨论】:
-
+1 一个关于一个有点神秘的话题/大会的好问题。我个人在
dealloc内release,并在viewDidUnload方法中将属性设置为nil(对于非IBOutlet 属性)。我不知道是否有对此有明确的答案,但我期待阅读一些答案。
标签: ios dealloc memory-management