我的应用收到内存警告,因为它需要大量内存。我试着释放每一个分配。但是,有时我不知道该怎么做。
例如:我有两对.h 和.m 文件。其中一个与服务器建立连接,另一个与本地 SQLite 建立连接。
通常,从这些文件调用方法的代码是这样的:
-(NSMutableArray *) getRecentActivity{
LocalStorageController *local = [[LocalStorageController alloc]init];
return [local getRecentActivity];
}
getRecentActivity 返回一个 NSMutableArray。
好吧,在那段代码中我们可以看到我正在为 LocalStorageController 分配内存,但我从未调用 release 方法,所以我想,我调用该函数的次数越多,分配的内存就越多。
如果我在 init 之后调用 autorelease,它会崩溃。
此外,通常,我使用这种其他类型的代码:
ServerConnection *serv = [[ServerConnection alloc]init];
NSMutableArray list = [serv getMyListOfContacts];
它使用 ASIHTTPRequest,如果我在第二行之后调用 [serv release];
,应用程序崩溃,EXC_BAD_ACCESS 指向 ASIHTTPRequest 库中的一行。
假设如何处理这种情况?
非常感谢!
最佳答案
第一种情况很简单;
-(NSMutableArray *) getRecentActivity{
LocalStorageController *local = [[LocalStorageController alloc]init];
NSMutableArray *tmp = [local getRecentActivity];
[local release];
return tmp;
}
如果不查看更多实际代码,第二种情况很难以一般方式解决。
关于ios 分配释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152077/