【发布时间】:2011-04-02 10:14:12
【问题描述】:
请帮我解决这个内存泄漏问题。在泄漏工具中,它显示了一个泄漏:库 Foundation 负责框架:NSPropertyListSerialization 中的 NSCFString(32 字节)。我正在释放错误,但仍然存在泄漏。我错过了什么?非常感谢!
NSPropertyListFormat format;
NSString *anError = nil;
id plist;
plist = [NSPropertyListSerialization propertyListFromData:rawCourseArray mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&anError];
if (!plist){
[anError release];
}
NSArray *entries = (NSArray *)plist;
for (NSDictionary *entry in entries)
{
// DO SOMETHING
}
【问题讨论】:
-
有各种各样的帖子说这是一个苹果错误,有人说使用 NSPropertyListSerialization options:format:error 和其他人说切换到 JSON 序列化,但我还没有找到一个很好的答案.
-
我看到一个错误:你不应该在代码中使用
[anError release];您不拥有对anError的引用。propertyListFromData:将在返回您的代码之前自动释放它。然而,这是一个 double-free 错误,而不是 leak。我在您发布的代码中没有看到任何泄漏。 -
在调试器中,po 泄漏的字符串的值,看看它是否给你任何提示。
-
尝试检查设备上的内存泄漏,一些 Apple 库在模拟器上有轻微泄漏。不要释放错误,它是一个自动释放对象。代码似乎是正确的。
标签: objective-c serialization memory-leaks property-list