ios 分配释放

标签 ios release alloc

我的应用收到内存警告,因为它需要大量内存。我试着释放每一个分配。但是,有时我不知道该怎么做。

例如:我有两对.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/

相关文章:

ios - objective-c:分配与综合/保留

ios - Swift3 webview isUserInteractionEnabled 不起作用

Android: imageview touch 并发布

ios - 如何在 iPhone 导航栏上添加背景图片?

c# - 在 Visual Studio 2012 中发布 C# winform 应用程序

android-studio - 安卓工作室 : release apk is not signed

objective-c - 新 NSObject 的最佳实践是什么 - 分配/初始化或更改现有?

c - 关于一个小型内存分配程序的问题(41行)

ios - 加载更多数据时 CollectionView 重复单元格

ios - 在 objective-c 中解析多行json