0

在以下代码片段中,使用 ARC,我如何让委托的寿命足够长以调用这两种方法?

当前我得到一个编译器错误

错误的接收器类型“__autoreleasing id *”

我认为我需要做一些事情来让 ARC 保留委托并在它完成调用时释放它,但不确定该做什么是正确的。

- (BOOL) requestFromURL:(NSString*)url withDelegate:( id<SimpleDataDelegate>*) delegate
{
    [NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://..."]]
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
     {
         if ( error )
         {
             [delegate gotFailure:data];
         }
         else
         {
             [delegate gotResult:data];
         }
     }];

    return YES;
}
4

1 回答 1

7

我认为您的方法签名可能应该是

- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>) delegate

代替

- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>*) delegate

注意在第一个参数中缺少 a *,在第二个参数中。试试看,看看错误是否消失。如果没有,请回来报告。

于 2012-09-16T03:40:32.950 回答