2012-04-23 60 views
0

作为iOS开发者的初学者。我在我的项目中使用ARC。我甚至使用ASIHttpRequest来简化一些工作。如你所知,ASIHttpRequest不支持ARC。我已经添加了-fno-objc-arc编译器标志以使其工作。 现在,这是我的问题。我怎样才能解除“请求”对象,如果我的一些像这样的代码:如何在我使用ARC的项目中发布“请求”?

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]; 
+3

使用ARC意味着您不必担心释放它。 – 2012-04-23 01:44:24

+0

而且,没有'alloc',所以即使在非ARC环境下也不需要释放... – SEG 2012-04-23 06:22:28

回答

0

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

1

它我的理解是混合ARC和非ARC的代码时,编译器与NSObjects正确的事情。

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

相关问题