在我的应用程序中,我创建了一个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];
现在我没有得到如何释放我分配的所有数组。它显示了我分配和初始化内存的潜在泄漏。
释放这些对象的正确方法是什么。
提前致谢
答案 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;