如何让ARC保留一个代表足够长的时间让它在块中调用?

ahw*_*ulf 0 objective-c ios objective-c-blocks automatic-ref-counting

在下面的代码片段中,使用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;
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ate 7

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

- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>) delegate
Run Code Online (Sandbox Code Playgroud)

代替

- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>*) delegate
Run Code Online (Sandbox Code Playgroud)

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