我有一个使用NSJSONSerialization的函数。我想做一个好的发布/内存管理,因为它可以是200多个对象。
for (NSDictionary *dict in visitsAndQuestionnaires) {
NSInputStream *is = [[NSInputStream alloc] initWithFileAtPath:filePath];
[is open];
if (is) {
JSON = [NSJSONSerialization JSONObjectWithStream:is options:0 error:nil];
if (![JSON respondsToSelector:@selector(objectForKey:)]) {
JSON = nil;
}
[is close];
}
[is release];
if (JSON) {
// HERE MY FUNCTION TO CREATE A LAYOUT BASED ON JSON
}
// WHEN FUNCTION WITH JSON IS DONE:
if (JSON) {
//JSON = NIL;
[(id)JSON release];
}
}
该功能比仅对象219上的219个对象的功能,应用程序与此控制台日志崩溃:
-[CFDictionary release]: message sent to deallocated instance 0x26a13ca0
即使我只是在它仍然存在时才释放JSON并且这可以工作(我可以在探查器中看到它),但它看起来就像它试图释放它已经消失的最后一个对象。
我该如何解决这个问题?这个释放功能有效吗?
答案 0 :(得分:2)
NSJSONSerialization
类返回一个自动释放的对象。只是不要释放它。
答案 1 :(得分:0)
在函数循环上创建Autoreleasepool是解决方案。谢谢你们!今天学到了一些东西..