我的应用正在接收内存警告,因为它正在请求大量内存。我尝试释放所有分配。但是,有时我不知道该怎么做。

例如:我有两对.h和.m文件。其中一个与服务器建立连接,另一个与本地SQLite建立连接。

通常,从这些文件中调用方法的代码如下:

-(NSMutableArray *) getRecentActivity{
    LocalStorageController *local = [[LocalStorageController alloc]init];
    return [local getRecentActivity];
}

getRecentActivity返回NSMutableArray。

好吧,在那段代码中,我们可以看到我正在为LocalStorageController分配内存,但是我从未调用过release方法,所以,我想,我调用该函数的次数越多,我将分配的内存就越多。

如果在初始化后调用自动释放,它将崩溃。

而且,通常,我使用这种其他类型的代码:
    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;
}

如果不查看更多实际代码,很难以一般方式解决第二种情况。

10-08 09:28