如何释放为appDelegate共享实例分配的内存

时间:2012-06-06 09:03:30

标签: iphone ios memory-management memory-leaks

在我的应用程序中,我创建了一个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]; 

现在我没有得到如何释放我分配的所有数组。它显示了我分配和初始化内存的潜在泄漏。

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

提前致谢

2 个答案:

答案 0 :(得分:2)

如果AppDelegate属性定义为(保留),只需执行

appDelegate.something = [[[Something alloc]init]autorelease];

这是ObjC中最常见的模式。

保留属性将保留新对象,autorelease实质上将来释放该对象,因此最终结果是一个保留计数为1的对象,该对象将在dealloc方法中释放。

答案 1 :(得分:0)

不要那样做

使用这种方式

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;