启动对象时使用自动释放。但后来释放了对象

时间:2011-05-31 14:00:51

标签: iphone objective-c

我的项目使用了oauthconsumer代码。

当我编写和分析我的代码时,我会注意到“对象发送 - 自动释放太多次了”。

让代码由比我更好的工程师编写是一个公平的假设,所以我不愿意“修复”它。

以下代码是错误的吗?

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    OAServiceTicket *ticket = [[OAServiceTicket alloc] initWithRequest:request
                                                              response:response
                                                                  data:responseData
                                                            didSucceed:[(NSHTTPURLResponse *)response statusCode] < 400];
    [ticket autorelease]; // HERE
    [delegate performSelector:didFinishSelector withObject:ticket withObject:responseData];
    [ticket release], ticket = nil; //HERE
}

这是好的代码还是应该删除自动释放?

2 个答案:

答案 0 :(得分:1)

在显示的场景中,由于ticket被明确释放而未从该方法返回,因此没有理由将其添加到自动释放池中,并且可以安全地删除autorelease调用。

答案 1 :(得分:1)

只需删除自动释放,你就可以了。更好的工程师显然犯了一个错误。