自从我使用XCode 4之后,泄漏工具显示有很多泄漏,都是来自JSONKit和ASIHTTPRequest的。在运行了2分钟之后,我泄漏了数百个数组/字典/字符串(来自jk_create_dictionary、jk_parse_array、HTTPMessage::*等),总共几百KB。大部分堆栈跟踪并不起源于我的任何调用,其余的则完全无辜。
我非常确定这在XCode 4之前不是这样的。
我不知道罪魁祸首是谁。任何见解都将不胜感激。
更新: JSONKit泄漏可能是由于JSONDecoder缓存导致的。 例如:
更新: 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
工作得非常完美,在你的情况下是你的代码(我猜可能使用了 block)导致了内存泄漏。也许你应该编辑你的问题或接受一个答案来关闭这个问题。 - Vincent Guerci