此代码是否泄漏内存(Objective-C全局变量)?

时间:2015-05-29 12:35:11

标签: ios objective-c memory-leaks

如果多次调用这两个函数会泄漏内存吗?我对Objective-C的了解非常简陋。它们对我来说似乎很好但我对这种实现没有好感觉?我应该删除“保留”吗? 这是一种在全球范围内存储对象的正确方法吗?

NSString* g_code = nil;

NSString* GetCode()
{
  if (!g_code)
  {
     std::string code = HelperFuncs::getCode();
     g_code = [[NSString stringWithUTF8String:code.c_str()] retain]; 
  }
  return g_code;
}

NSDictionary* g_options = nil;

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
{
    g_options = [[NSDictionary alloc] initWithDictionary:userInfo];
}

2 个答案:

答案 0 :(得分:1)

我会在这里申请singleton pattern,如果有可能的话:使用ARC,这会让生活更轻松。

答案 1 :(得分:0)

如果您对Objective-C和非ARC项目的了解不太了解,那么它很难处理内存。如果您将项目转换为ARC,有一件事可能对您有所帮助。  转到Xcode - >编辑 - >转换 - >对于Objective-C ARC ......这种方式将您的项目转换为ARC,如果有帮助,请告诉我