在下面的代码片段中,使用 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;
}
我认为您的方法签名可能应该是
- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>) delegate
而不是
- (BOOL) requestFromURL:(NSString*)url withDelegate:(id<SimpleDataDelegate>*) delegate
请注意,第一个参数(第二个参数)中缺少*
。 试试这个,看看错误是否消失了。 如果没有,请报告。