使用ARC进行NSURLConnection sendSynchronousRequest

Jas*_*orn 11 objective-c nsurlconnection automatic-ref-counting

我开始玩ARC了,我尝试的第一个体验之一是对URL进行HTTP调用并获取一些数据.当然,HTTP状态代码对我来说很重要,所以这意味着我去了我使用的"goto" sendSynchronousRequest:

NSError *error = [[NSError alloc] init];
NSHTTPURLResponse *responseCode = nil;

NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:responseCode error:error];
Run Code Online (Sandbox Code Playgroud)

启用ARC后,我在最后一行收到编译器错误和警告.

错误:

使用ARC不允许将Objective-C指针隐式转换为'NSURLResponse*__ autoreleasing*'

使用ARC不允许将Objective-C指针隐式转换为'NSError*__ autoreleasing*'

file://localhost/Users/jason/Projects/test/Data/DataService.m:错误:自动引用计数问题:ARC不允许将Objective-C指针隐式转换为'NSURLResponse*__ autoreleasing*'

file://localhost/Users/jason/Projects/test/Data/DataService.m:错误:自动引用计数问题:ARC不允许将Objective-C指针隐式转换为'NSError*__ autoreleasing*'

警告:

不兼容的指针类型将'NSHTTPURLResponse*_ strong'发送到'NSURLResponse* _autoreleasing*' 类型的参数

不兼容的指针类型将'NSError*_ strong'发送到'NSError* _autoreleasing*' 类型的参数

从我可以告诉参考传递是什么搞乱了这一点,但我不确定解决这个问题的正确方法是什么.是否有一种"更好"的方式来完成ARC的类似任务?

Car*_*rlJ 23

  NSError *error = nil;
  NSHTTPURLResponse *responseCode = nil;

  NSURLRequest *request;

  NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
Run Code Online (Sandbox Code Playgroud)

你错过了对error/responceCode指针的引用!