gpt4 book ai didi

iphone - Cocoa touch - 内存管理

转载 作者:行者123 更新时间:2023-12-03 18:02:14 26 4
gpt4 key购买 nike

我是一名前 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?

在 ViewController 中我有一个 IBAction:

[self.view removeFromSuperView];

如何确保对象 aViewController 在从 super View 中删除后被完全“删除”并释放内存(将该 Controller 视为图形密集型 View Controller )?

另外,一般来说,有没有办法确保对象被释放?我知道,如果我询问一个对象的所有权,我必须在某个点释放它,但是如果我只想让该对象的指针在某个点为空(不基于保留计数)怎么办?我应该直接调用dealloc吗?我发现有时很难控制保留/释放机制。

如果有人能给我一个快速的分析,让我的想法“点击”,我将非常感激。谢谢。

最佳答案

简短的回答是,您不应该担心对象何时被释放(除非您正在调试内存管理问题)。您应该只关心确保如果您的代码保留、复制或初始化一个对象,它会释放或自动释放它。通过这样做,您将确保正确维护引用计数,从而为您管理释放。

将决定何时释放对象的任务留给运行时。切勿直接调用 dealloc,除非您在对象 dealloc 方法末尾调用父类(super class) dealloc 方法。

关于iphone - Cocoa touch - 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5247132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com