我有一个使用 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 仍然存在时才发布它并且这有效(我可以在探查器中看到它),但它看起来像当它试图释放最后一个对象时它已经消失了。
我怎样才能解决这个问题?所以这个发布功能有效吗?