ARC および非 ARC プロジェクトを処理するように設定されたXMLRPC ライブラリを使用しています。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 プロジェクトの処理を削除する必要がありますか、それともエラー/警告が表示される理由はありますか?