【发布时间】:2012-01-03 16:42:02
【问题描述】:
我开始使用 ARC,我尝试的第一个实验之一是对 URL 进行 HTTP 调用并取回一些数据。当然,HTTP 状态码对我来说很重要,所以这意味着我去了使用sendSynchronousRequest 的“goto”,例如:
NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseCode = nil;
NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:responseCode error:error];
启用 ARC 后,我在最后一行收到编译器错误和警告。
错误:
Objective-C 指针到 'NSURLResponse 的隐式转换 *__autoreleasing *' 不允许使用 ARC
Objective-C 指针到 'NSError 的隐式转换 *__autoreleasing *' 不允许使用 ARC
file://localhost/Users/jason/Projects/test/Data/DataService.m:错误: 自动引用计数问题:隐式转换 Objective-C 指向 'NSURLResponse *__autoreleasing *' 的指针是 ARC不允许
file://localhost/Users/jason/Projects/test/Data/DataService.m:错误: 自动引用计数问题:隐式转换 不允许使用指向“NSError *__autoreleasing *”的 Objective-C 指针 圆弧
警告:
不兼容的指针类型将“NSHTTPURLResponse *_strong”发送到 'NSURLResponse *_autoreleasing *'类型的参数
不兼容的指针类型将“NSError *_strong”发送到参数 输入 'NSError *_autoreleasing *'
据我所知,引用传递是什么搞砸了,但我不确定解决这个问题的正确方法是什么。有没有“更好”的方式来完成与 ARC 类似的任务?
【问题讨论】:
标签: objective-c nsurlconnection automatic-ref-counting