Ios 使用ARC时释放NSMutableArray
我正在使用最新的SDK和ARC开发一个iOS应用程序 我有一个变量:Ios 使用ARC时释放NSMutableArray,ios,objective-c,memory-management,automatic-ref-counting,Ios,Objective C,Memory Management,Automatic Ref Counting,我正在使用最新的SDK和ARC开发一个iOS应用程序 我有一个变量: NSMutableArray* _previewImageBuffer; 这种方法: - (void)shutdown { [self stop]; _previewImageBuffer = nil; } 是\u previewImageBuffer=nil正确吗?如果我这样做,那么在_previewImageBuffer`中分配的内存会发生什么情况?这是内存泄漏吗 我想释放此对象,因为我需要释放它使用的
NSMutableArray* _previewImageBuffer;
这种方法:
- (void)shutdown
{
[self stop];
_previewImageBuffer = nil;
}
是\u previewImageBuffer=nil代码>正确吗?如果我这样做,那么在_previewImageBuffer`中分配的内存会发生什么情况?这是内存泄漏吗
我想释放此对象,因为我需要释放它使用的内存。您所做的完全正确。在ARC下对对象实例变量进行零化将释放该对象。释放NSArray,如果它导致NSArray被释放,也会释放其所有元素
如果您对内存管理和ARC有疑问或困惑,最好停下来仔细阅读事实,直到您不再有疑问或困惑为止。我的书可能有一个有用的解释:
在电弧下,这不是泄漏。内存将被释放。在学习ARC时,您还应该了解strong
或弱
参考之间的区别
您也应该退房。也许在这里回答?但并非只有你一个人,在手动管理内存这么多年后,现在查看ARC代码有时会让人困惑:p你引用的答案让人困惑,不适用于此处次要细节:将指针设置为nil不会取消分配指针,它会导致指针地址所在的对象可能被解除分配——如果没有其他强指针对其进行地址分配的话。指针\u previewImageBuffer
本身属于“this”对象,在删除该对象时将被解除定位。