【问题标题】:NSString memory issue while creating JSONString创建 JSONString 时的 NSString 内存问题
【发布时间】:2016-06-15 00:26:58
【问题描述】:

在我的应用程序中,我有一个使用 NSJSONSerialization 创建 JSONString 的函数。在几秒钟内多次调用此函数以生成长 JSONString。此 NSString 导致内存问题,导致应用崩溃。

-(NSString *)getJSONString:(NSArray *)arrayWithDictionary{
      NSError *error =nil;
      NSString *jsonStringToReturn = [[NSString alloc]initWithData:[NSJSONSerialization dataWithJSONObject:arrayWithDictionary options:0 error:&error] encoding:NSUTF8StringEncoding];
      return jsonStringToReturn;
}

arrayWithDictionary 里面有很多 NSDictionary。我已将代码放在@autoreleasepool 中以避免内存问题,但它没有帮助。

【问题讨论】:

  • 什么样的“内存问题”?
  • 在 Allocations Instrument 中,显示该字符串已使用高达 600 MB 的内存。
  • 您需要展示您是如何使用该方法的,因为它本身没有任何问题。
  • 你为什么要创建一个字符串?使用该字符串没有任何用处。
  • 这只是一个场景。创建的字符串作为 pluginResult 发送回 js。

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


【解决方案1】:

将带有 JSON 数据的字典转换为字符串会占用内存。解决这个问题的方法很简单:不要这样做。首先,没有理由需要字符串。将 JSON 转换为 NSData 并保持原样。其次,您可以将 JSON 数据不转换为 NSData,而是转换为文件。根本不需要内存。

第三,确保某些自动释放池中没有不再需要的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2011-10-19
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多