我的项目使用了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
}
这是好的代码还是应该删除自动释放?
答案 0 :(得分:1)
在显示的场景中,由于ticket
被明确释放而未从该方法返回,因此没有理由将其添加到自动释放池中,并且可以安全地删除autorelease
调用。
答案 1 :(得分:1)
只需删除自动释放,你就可以了。更好的工程师显然犯了一个错误。