【发布时间】:2011-07-21 23:39:22
【问题描述】:
自从切换到 XCode 4 以来,泄漏工具显示大量泄漏,全部来自 JSONKit 和 ASIHTTPRequest,运行 2 分钟后,我泄漏了数百个数组/字典/字符串(来自 jk_create_dictionary、jk_parse_array、HTTPMessage::*、等)总计几百 KB。大多数堆栈跟踪都不是源自我的任何调用,其余的完全是无辜的。 我很肯定 XCode 4 之前的情况并非如此。 我不知道罪魁祸首是谁。任何见解都会很可爱。
更新:
JSONKit 泄漏可能是 JSONDecoder 缓存。
例如:
static JSONDecoder *decoder = nil;
if (!decoder)
decoder=[[JSONDecoder alloc] init];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]];
[request setCachePolicy:ASIDoNotWriteToCacheCachePolicy];
[request setCompletionBlock:^{
NSData *response = [request responseData];
NSDictionary *json = [decoder objectWithUTF8String:[response bytes] length:[response length]];
// ...
}];
[request setFailedBlock:^{
// ...
}];
[request startAsynchronous];
【问题讨论】:
-
得到了使用 JSONKit 的泄漏报告......正在调查。
-
JSONKit完美运行,在您的情况下,是您的代码 (我猜可能使用块) 导致内存泄漏。也许您应该编辑您的问题或接受答案以关闭此问题。
标签: objective-c xcode instruments asihttprequest