如何在使用ARC的项目中发布“请求”?

时间:2012-04-23 01:35:42

标签: ios asihttprequest automatic-ref-counting

作为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];

2 个答案:

答案 0 :(得分:1)

我的理解是,当混合ARC和非ARC代码时,编译器使用NSObjects做正确的事情。

根据Cocoa方法的命名约定,responseData应该是非拥有引用。因此,您不应对保留/释放它负责。请求对象拥有它。

答案 1 :(得分:0)

无需发布此“请求”,因为这些代码位于使用ARC的文件中。编译器将帮助您插入释放方法。但是对于ASIHTTPRequest.m文件中的对象,您需要释放它们(实际上您不需要这样做),因为您添加了-fno-objc-arc编译器标志,并且编译器不会为您插入释放方法。