当前位置:  开发笔记 > 编程语言 > 正文

清理iPhone应用程序内存的最佳做法?

如何解决《清理iPhone应用程序内存的最佳做法?》经验,为你挑选了1个好方法。

我看过周围的示例源代码使用不同的方式释放/解除对象,所以我想知道哪种方式被认为是"最好的".一些选项-dealloc:

1)释放对象

- (void)dealloc {
    [obj1 release];
    [obj2 release];
    [super dealloc];
}

2)将对象设置为nil

- (void)dealloc {
    self.obj1 = nil;
    self.obj2 = nil;
    [super dealloc];
}

3)直接取消分配对象

- (void)dealloc {
    [obj1 dealloc];
    [obj2 dealloc];
    [super dealloc];
}

哪种方式最好?每个人的利弊?



1> Marco..:

方法1是唯一推荐的方法.在你释放它们之后将它们设置为nil也是一种好习惯.

方法2仅适用于管理自己的对象/值保留的属性,因此它不是普遍适用的.如果您实现自己的setter方法,该方法在属性更改时执行其他操作,则可以通过在[dealloc]中调用它来获得不需要的副作用.

方法3违反了引用计数原则,因为它会释放对象,即使其他对象有[retain]保留,所以当其他对象接下来访问它们时,程序将崩溃.你永远不应该直接调用[dealloc] - 让运行时在最后一个所有者调用[release]时调用它.

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有