このお試しください:私は変換し、すべてを確認するために迅速な小さなユニットテストを書いた
NSError + CFErrorRef.h
@interface NSError (CFErrorRef)
- (CFErrorRef) cferror;
@end
NSError + CFErrorRef.m
#import "NSError+CFErrorRef.h"
@implementation NSError (CFErrorRef)
- (CFErrorRef) cferror
{
CFStringRef domain = (CFStringRef) self.domain;
CFDictionaryRef userInfo = (__bridge CFDictionaryRef) self.userInfo;
return CFErrorCreate(kCFAllocatorDefault, domain, self.code, userInfo);
}
@end
をそれは正しく動作しているようです。次に、NSErrorオブジェクトで次のセレクタを実行するだけです。
CFErrorRef e = [error cferror];
カンニング? blah((CFErrorRef *)(void *)エラー); –
...それ以外の場合は、2段階のプロセスです。私はコンパイラがローカル宣言をする必要があることはかなり明白だと思います。私はそれが正しく、その簿記を行うことはできないと思う。 (CFErrorRef error2; blah(&error2); * error =(__bridge NSError *)error2; - あなたが避けようとしているものだと思います。 –
確かに、エラーオブジェクトを発信者自身にホットポテトしてもらう必要はありません。 –