当前位置:  开发笔记 > IOS > 正文

将对象设置为nil与release + realloc

如何解决《将对象设置为nil与release+realloc》经验,为你挑选了3个好方法。

这不是垃圾收集环境

我有一个类实例变量,在我的运行时的某个时刻,我需要使用与最初构造时不同的数据集重新初始化.

假设,如果我有一个NSMutableArray或一个NSMutableDictionary,那么做一些事情会更有效:

[myArr release];
myArr  = [[NSMutableArray alloc] init....];

要不就,

myArr = nil;

myArr是否会释放该对象并让我没有指向内存中的存储器的指针,这样我就可以重新使用myArr了?



1> Abizern..:

如果你自己做myArr=nil;,那么你已经丢失了可以发送release消息的指针.release你的物体没有魔力.

并且,正如乔治所说,无法释放你的物体,那个记忆已经"泄露"了.



2> Lounges..:

您可以使用属性并获得所需的语法,而不会出现内存泄漏.

使用此语法声明数组

@property (readwrite, retain) NSMutableArray *myArray;

然后像这样重新初始化它:

[self setMyArray:[NSMutableArray array]];



3> mouviciel..:

如果您使用的是Mac OS,而不是iPhone OS,我会说它取决于垃圾收集器是否被激活:

使用GC:使用 myArr = nil;

没有GC:使用 [myArr release];

不幸的是,在iPhone上,没有垃圾收集,所以如果你不想要内存泄漏,你必须在不再需要它时释放你的对象.

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