【问题标题】:Nasty NSPropertyListSerialization Leak讨厌的 NSPropertyList 序列化泄漏
【发布时间】:2011-01-13 00:51:21
【问题描述】:
NSString *anError = nil;
 id plist;
 plist = [NSPropertyListSerialization propertyListFromData:rawCourseArray mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&anError];
 if (anError != nil){

  [anError release];
 }

上面的代码每次调用都会导致内存泄漏。我正在释放错误,但仍然存在泄漏。我还没有看到这个问题的任何解决方案。我已经发布了这个,大多数人回应说这不是泄漏。但是在泄漏性能工具中查看这里:

我需要修复这个问题,因为最终我的应用程序崩溃了。有任何想法吗?非常感谢

【问题讨论】:

  • 我仍然需要修复此泄漏。还有其他方法可以调用 NSPropertyListSerialization 吗?

标签: iphone memory-leaks plist


【解决方案1】:

我遇到了同样的问题。使用 propertyListWithData:options:format:error: 结果相同。使用 NSDictionary initWithContentsOfFile 结果相同:

Leaked Object # Address Size 责任库责任框架 NSCFNumber,19 304 Bytes MediaToolbox FigRemote_CreatePropertyListFromBinaryPListData

FWIW - 我在 pList 中只有字典、数组和字符串,没有数字。

问题不在于错误对象(或方法中的字符串)。问题不是上面的 plist,因为它应该是自动释放的。最后,我放弃了,用 JSON 重新实现了:

http://stig.github.com/json-framework/api/index.html

==> 不再泄漏。

最好, 弗雷德

【讨论】:

  • JSON 可能是我唯一的选择。 :^(
【解决方案2】:

我以前也遇到过同样的问题。

基本上这是因为您的error 变量在没有启动它的情况下被释放。所以你可以做的是在释放它之前尝试将你的NSString *error初始化为一个空字符串。或者根本不发布它。

【讨论】:

  • 尝试了您的建议,但没有成功。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-27
  • 1970-01-01
  • 2011-04-02
  • 2020-12-24
  • 1970-01-01
  • 2010-11-19
  • 2018-04-18
相关资源
最近更新 更多