0

作为 iOS 开发者的初学者。我在我的项目中使用 ARC。我什至使用 ASIHttpRequest 来简化一些工作。如您所知,ASIHttpRequest 不支持 ARC。我添加了 -fno-objc-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];
4

2 回答 2

1

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

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

于 2012-04-23T01:48:56.160 回答
0

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

于 2012-04-23T05:17:32.440 回答