1

这是我遇到的一个泄漏问题。大部分代码只是为了上下文,所以你可以看到“响应” NSData 对象不是泄漏的。

如果我深入到 touchJSON 代码,按照 LEAKS 工具给我的堆栈跟踪,泄漏显然是从这条线上开始的

 *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 代码是

   -(BOOL)scanJSONStringConstant:(NSString **)outStringConstant error:(NSError **)outError {

    NSMutableString *theString = [[NSMutableString alloc] init];
if (outStringConstant != NULL) { *outStringConstant = [[theString copy] autorelease]; }

       [theString release];

    }
4

0 回答 0