这不是垃圾收集环境
我有一个类实例变量,在我的运行时的某个时刻,我需要使用与最初构造时不同的数据集重新初始化.
假设,如果我有一个NSMutableArray
或一个NSMutableDictionary
,那么做一些事情会更有效:
[myArr release]; myArr = [[NSMutableArray alloc] init....];
要不就,
myArr = nil;
myArr是否会释放该对象并让我没有指向内存中的存储器的指针,这样我就可以重新使用myArr了?
如果你自己做myArr=nil;
,那么你已经丢失了可以发送release
消息的指针.release
你的物体没有魔力.
并且,正如乔治所说,无法释放你的物体,那个记忆已经"泄露"了.
您可以使用属性并获得所需的语法,而不会出现内存泄漏.
使用此语法声明数组
@property (readwrite, retain) NSMutableArray *myArray;
然后像这样重新初始化它:
[self setMyArray:[NSMutableArray array]];
如果您使用的是Mac OS,而不是iPhone OS,我会说它取决于垃圾收集器是否被激活:
使用GC:使用 myArr = nil;
没有GC:使用 [myArr release];
不幸的是,在iPhone上,没有垃圾收集,所以如果你不想要内存泄漏,你必须在不再需要它时释放你的对象.