【问题标题】:CoreData memory managementCoreData 内存管理
【发布时间】:2011-06-16 14:04:21
【问题描述】:

我来自 .NET 世界,所以内存管理并不是我在过去给予太多的东西。所以,这就是我所处的情况。我有一个搜索数据库并将一些数据返回给视图控制器的方法:

- (NSArray *)getSomeData
{
    NSMutableArray *myArray = [[NSMutableArray alloc] init];
    //search DB
    [myArray addObject:@"Here I'm adding some objects"];
    return myArray;
}

在我的视图控制器中,我有一个全局变量 NSArray *myGlobalData 来添加我的数据库数据:

myGlobalData = [DataManager getSomeData];

当我使用分配或泄漏运行我的应用程序时,会出现内存泄漏。我怎样才能避免这种情况?我尝试使用自动释放,但没有帮助。处理初始化/分配对象返回的标准方法是什么?

【问题讨论】:

  • 不要调用方法get任何东西;就叫它someDataget 有非常具体和特殊的含义。
  • 我在数据层命名约定中使用“fetch”和“save”。我认为您指的是 getter 和 setter,但我只是想澄清一下,因为我是新手ObjC 并想尽可能多地学习 :) 我认为这是一个很好的建议!
  • 没关系; get 表示该方法将通过引用返回某些内容,这在 Cocoa API 中非常罕见。

标签: objective-c ios memory-management memory-leaks


【解决方案1】:

你需要....

 return [myArray autorelease];

但请确保将数组保留在使用它的位置....

【讨论】:

  • 所以我用自动释放返回它,然后用 self.myGlobalData 保留它。然后在 unload 或 dealloc 或其他任何东西上释放 myGlobalData..tnx.. 我会马上尝试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 2012-03-21
  • 1970-01-01
相关资源
最近更新 更多