Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何释放中为appDelegate shared Instance分配的内存_Iphone_Ios_Memory Management_Memory Leaks - Fatal编程技术网

Iphone 如何释放中为appDelegate shared Instance分配的内存

Iphone 如何释放中为appDelegate shared Instance分配的内存,iphone,ios,memory-management,memory-leaks,Iphone,Ios,Memory Management,Memory Leaks,在我的应用程序中,我创建了一个appdelegate共享实例,并且我正在将内存分配给某个数组,如 appDelegate = (AppDelegate_Shared *)[[UIApplication sharedApplication] delegate]; appDelegate.allServiceAppList_array = [[NSMutableArray alloc]init]; appDelegate.blockXMLData_array = [[NSMutableArray a

在我的应用程序中,我创建了一个appdelegate共享实例,并且我正在将内存分配给某个数组,如

appDelegate = (AppDelegate_Shared *)[[UIApplication sharedApplication] delegate];
appDelegate.allServiceAppList_array = [[NSMutableArray alloc]init];
appDelegate.blockXMLData_array = [[NSMutableArray alloc]init];
appDelegate.notesXMLData_array = [[NSMutableArray alloc]init]; 
现在我不知道如何释放我分配的所有阵列。它显示了我分配和初始化内存的潜在泄漏

释放这些对象的正确方法是什么

提前谢谢你不要这样做

这样

NSMutableArray* arr = [[NSMutableArray alloc]init];
appDelegate.allServiceAppList_array = arr;
[arr release];
arr =nil;

arr = [[NSMutableArray alloc]init];
appDelegate.blockXMLData_array = arr;
[arr release];
arr =nil;

arr = [[NSMutableArray alloc]init];
appDelegate.notesXMLData_array = arr;
[arr release];
arr =nil;

如果AppDelegate属性定义为(retain),只需执行以下操作

这是ObjC中最常见的模式


保留的属性将保留新对象,自动释放实际上是在将来释放该对象,因此最终结果是保留计数为1的对象将以dealloc方法释放。

您应该阅读有关内存管理的文档。您正在使用ARC吗?谢谢,但是我可以按照上面的方式释放阵列吗?我喜欢你的方式。分配的数组指针已分配给代理数组,你正在释放作用域中的指针。非常感谢你的帮助。@user1398312请确保你阅读并理解Objective-C的内存管理(请参阅我在评论中添加的链接)。不要只是盲目地复制和粘贴代码,因为这会导致问题-花时间去理解它。注意,如果你使用ARC,这个答案会引起很多问题。@NickBull我想你还没有读过他的问题。他问过如何释放这些物体,所以如果你有一些常识,肯定会有MRC
appDelegate.something = [[[Something alloc]init]autorelease];