下面是我遇到的麻烦泄漏问题。 大部分代码是就在这里为背景,所以你可以看到“响应” NSData对象是不是出了什么泄漏。
如果我被泄漏工具,给我钻到touchJSON代码,以下堆栈跟踪,泄漏显然是在该行开始生活
*outStringConstant ....
但由于这是这样一个常用的图书馆,我怀疑这就是问题所在。
一个音符。 这不漏第一次它的执行,只有每一个后续的时间。 但它泄漏了很多,所以响应的数据可能是真实泄露的实际数据。
此外,如果有人熟悉touchJSON这个代码,能不能请你解释一下这个outStringConstant变量是和它做什么? 它似乎没有起到任何作用,除了要分配theString的副本,但如果我删除了这一行的代码崩溃。
我的代码是
dataRequestURL = [NSString stringWithFormat:@"http://www....", ...];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:dataRequestURL] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:&ts_response error:&ts_error];
NSArray *array = [[CJSONDeserializer deserializer] deserialize:response error:nil]; <- LEAKS HERE
TOUCHJSON CODE是
-(BOOL)scanJSONStringConstant:(NSString **)outStringConstant error:(NSError **)outError {
NSMutableString *theString = [[NSMutableString alloc] init];
if (outStringConstant != NULL) { *outStringConstant = [[theString copy] autorelease]; }
[theString release];
}