我已经在iOS中看到了几种不同的内存管理方法,就释放属性而言。经过与同事的一番辩论,我的脑袋里的利弊已经变得混乱了。这些不同的dealloc策略有哪些优缺点?
,我希望能得到利弊,让我和其他人可以轻松地选择一个默认的态度,同时仍时做出例外理解的摘要。这里有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'内'释放',并在'viewDidUnload'方法中将属性设置为'nil'(对于非IBOutlet属性)。我不知道这是否是一个明确的答案,但我期待阅读一些答案。 – Stuart 2011-05-06 19:53:57