une*_*lue 6 xcode objective-c instruments asihttprequest
自从切换到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];
Run Code Online (Sandbox Code Playgroud)
根据 Apple 的 WWDC 2010 视频(使用仪器进行高级内存分析),误报泄漏很少见。有时,泄漏工具会漏掉泄漏,但它报告的泄漏是可靠的。我不太擅长静态,但是您是否检查过以确保您没有在未释放解码器的情况下分配解码器?如果它没有发布并且超出范围,那就构成泄漏,对吗?
| 归档时间: |
|
| 查看次数: |
2669 次 |
| 最近记录: |