【发布时间】:2011-11-09 17:37:54
【问题描述】:
我知道 iOS 中的内存管理对于像我这样的新手来说很棘手,但我希望在 stackoverflow 上有一个清晰的解释,这是我在其他任何地方都找不到的。
所以,假装我有一个属性 / ivar
@property(nonatomic, retain) UIPopoverController *popOver;
我是这样分配的:
self.popOver = [[[UIPopoverController alloc] initWithContentViewController:popOverContent] autorelease];
现在,在我的 dealloc 和 viewDidUnload 方法中,我都这样做了
// in viewDidUnload:
self.popOver = nil;
// in dealloc:
[popOver release];
问题:
- 如果我在 viewDidUnload/dealloc 中执行 nil/release,我真的需要在分配时自动释放吗?
- 反之亦然,如果我在分配时自动释放,我是否需要稍后再取消/释放?
- 有什么区别(如果有的话)?
在此先感谢您抽出宝贵的时间 - 我会继续阅读,说真的,内存管理并不是那么难缠您的头...
【问题讨论】:
-
感谢编辑标题;我看到了类似的问题,前面有“iOS:”;实际上是在没有它的情况下开始的。
标签: objective-c ios autorelease dealloc