我是一名前Java程序员,在管理 cocoa touch 内存时遇到一些麻烦。
实际上,我认为我有保留/释放技巧,但是仍然不确定我是否正确。
例如,我正在创建一个 subview 并将其添加到主窗口:
aViewController=[[AViewController alloc]init];//aViewController is (nonatimic,assign), so retaincount = 1 after this line?
[self.window addsubview aViewController];
[aViewController release];//retaincount=0?
在aViewController中,我有一个IBAction:
[self.view removeFromSuperView];
我如何确定将aViewController对象从 super View 中删除后将其完全“删除”并释放内存(将其视为图形密集型 View Controller )?
另外,通常是否有办法确保对象被释放?我知道,如果我要求某个对象的所有权,我必须在某个点释放它,但是如果我只希望该对象的指针在某个点为空(而不是基于keepcount),该怎么办?我应该直接调用dealloc吗?我发现有时很难控制保留/释放机制。
如果有人可以快速细分我的想法,让我“点击”,我将非常感激。
谢谢。
最佳答案
简短的答案是,您不必担心何时释放对象(除非您正在调试内存管理问题)。您应该担心要确保如果代码保留,复制或初始化了对象,则它会释放或自动释放它。这样,您将确保正确维护引用计数,因此将为您管理释放。
保留决定何时将对象取消分配给运行时的任务。除非直接在对象dealloc方法的末尾调用父类(super class)dealloc方法,否则切勿直接调用dealloc。