【问题标题】:Memory Leak with NSMutableDictionaryNSMutableDictionary 的内存泄漏
【发布时间】:2010-07-29 17:17:04
【问题描述】:

对这行代码为什么会导致内存泄漏感到困惑:

NSPropertyListFormat format;
NSMutableDictionary *d = [NSPropertyListSerialization propertyListWithData:rawCourseArray options:NSPropertyListMutableContainers format:&format error:NULL];

非常感谢任何有关修复的建议!

问候, 乙

【问题讨论】:

  • 在退出这段代码所在方法的作用域之前,是否释放d
  • 感谢您的快速响应:当我尝试释放“d”时,我的应用程序崩溃了。但是当我从性能工具检查泄漏时,它显示:泄漏对象:NSCFString;负责图书馆:基金会;负责框架:NSPropertyListSerialization
  • propertyListWithData 返回一个自动释放的对象 - 所以你不应该手动释放 d
  • 上述代码仍然存在泄漏。任何想法都会有很大帮助!不知道该怎么办。泄漏可能与错误有关。但是我不确定如何释放错误...???
  • 就像@Kenny 所说,没有泄漏。围绕这两行发布代码,我们可能能够追踪到泄漏。另外,您滥用了枚举格式。

标签: objective-c serialization memory-leaks nsmutabledictionary


【解决方案1】:

你使用了属性吗?

self.d = [NSPropertyListSerialization propertyListWithData:rawCourseArray options:NSPropertyListMutableContainers format:&format error:NULL];

我也遇到了类似的泄漏,并使用属性(即 self.d)解决了它

【讨论】:

  • 谢谢!我今晚会试试这个,看看它是否有帮助!问候
  • 试过 self.d 但它给出了一个语法错误。你确定那是你的解决方案吗?谢谢
  • 刚刚注意到...我目前使用的这段代码的新版本与我声明变量的方式不同。我将它从“NSMutableDictionary *d”更改为“id d”...今晚我将尝试将其更改回“NSMutableDictionary *d”并再次尝试“self.d”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多