我是一个新手,当谈到目标C,我现在遇到内存泄漏与下面的代码片段。内存泄漏发生在“响应对象”分配中。每当我试图发布类似于responseData的内容时,我就会崩溃。

-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString* responseStr = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSMutableArray* responseObj = [responseStr objectFromJSONString];
    [delegate loadGameDetails:[responseObj objectForKey:@"result"]];
    [responseStr release];

    [responseData release]; responseData = nil;
}

我也尝试了如下自动释放,但也遇到了崩溃:
[delegate loadGameDetails:[[responseObj objectForKey:@"result"] autorelease]];

我释放这个内存块的正确方法是什么?

最佳答案

问题不在你的分配上。您正在将objectForKey:发送到一个NSMutableArray方法,这实际上是一个NSDictionary/NSMutableDictionary方法。仔细检查真正返回的对象类型。

10-07 19:27