使用为 ARC 配置的 XMLRPC 库,收到 ARC 错误
Posted
技术标签:
【中文标题】使用为 ARC 配置的 XMLRPC 库,收到 ARC 错误【英文标题】:using a XMLRPC Library configured for ARC, getting an ARC error 【发布时间】:2012-11-09 15:56:31 【问题描述】:我正在使用设置为处理 ARC 和非 ARC 项目的XMLRPC library。当我尝试向它传递一个 NSError 对象时,我得到了错误:
Implicit conversion of an Objective-C point to 'NSError *_autoreleasing *' is disallowed with ARC
还有一个警告:
Incompatible point types sending 'NSError *_strong' to parameter of type 'NSError *_autoreleasing *'
方法如下:
+ (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error
NSHTTPURLResponse *response = nil;
#if ! __has_feature(objc_arc)
NSData *data = [[[NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error] retain] autorelease];
#else
NSData *data = [NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error];
#endif
if (response)
NSInteger statusCode = [response statusCode];
if ((statusCode < 400) && data)
#if ! __has_feature(objc_arc)
return [[[XMLRPCResponse alloc] initWithData: data] autorelease];
#else
return [[XMLRPCResponse alloc] initWithData: data];
#endif
return nil;
这是我的尝试:
NSError *myError;
XMLRPCResponse *serverResponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:request error:myError];
我想我不熟悉
#if
语法,但我猜它的行为就像一个普通的 If 语句?
我也启用了 ARC:
我应该重做 XMLRPCResponse 方法以删除对非 ARC 项目的处理,还是有什么原因导致我收到错误/警告?
【问题讨论】:
【参考方案1】:在这里看看这个答案:
How do I know whether the compiler has ARC support enabled?
你用的是什么编译器?可能不支持__has_feature
关于错误..你应该按照以下方式做一些事情:
NSError *error = nil;
XMLRPCResponse *serverResponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:request error:&error];
因为该方法需要一个双指针作为错误参数。
【讨论】:
好的,那应该不是问题。我已经更仔细地阅读了您的帖子并编辑了我的答案。 是的,就是这样;该方法需要一个指向错误的指针。谢谢!以上是关于使用为 ARC 配置的 XMLRPC 库,收到 ARC 错误的主要内容,如果未能解决你的问题,请参考以下文章