作为iOS开发人员的初学者。我在我的项目中使用ARC。我甚至使用ASIHttpRequest来使一些工作更容易。如您所知,ASIHttpRequest不支持ARC。我添加了-fno-objc-arc编译器标志以使其工作。 现在,这是我的问题。如果我的一些代码如下所示,我如何发布'request'对象:
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
NSData *responseData = [request responseData];
}];
[request setFailedBlock:^{
NSError *error = [request error];
}];
[request startAsynchronous];
答案 0 :(得分:1)
我的理解是,当混合ARC和非ARC代码时,编译器使用NSObjects做正确的事情。
根据Cocoa方法的命名约定,responseData应该是非拥有引用。因此,您不应对保留/释放它负责。请求对象拥有它。
答案 1 :(得分:0)
无需发布此“请求”,因为这些代码位于使用ARC的文件中。编译器将帮助您插入释放方法。但是对于ASIHTTPRequest.m文件中的对象,您需要释放它们(实际上您不需要这样做),因为您添加了-fno-objc-arc编译器标志,并且编译器不会为您插入释放方法。