メソッドパラメーターとしてnserror **を渡すときのコンパイラ警告
-
25-09-2019 - |
質問
私は過去4時間、これについて頭を掻いて、あらゆる種類の小さな実験を試してみましたが、何がうまくいかないのかを理解できないようです。これはコンパイラバグでしょうか?
test.m:
- (id)initWithContentsOfURL:(NSURL *)aURL error:(NSError **)error
{
if (!(self = [super init])) {
return nil;
}
return self;
}
main.m:
NSError *error;
Test *t = [[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];
これがコンパイラ警告です(Main.Mから):
警告:互換性のないObjective-Cタイプ 'struct nserror **'、予想される 'struct nsdictionary **' 'initwithcontentsofurl:error:'の引数2を渡すとき
XcodeとSnow Leopardの最新バージョンを使用しています。
解決
セレクターの別のインスタンスを拾っていると思います。 initWithContentsOfURL:error:
- おそらく1つ NSAppleScript
. 。それを覚えておいてください [NSObject alloc]
andを返します id
.
あなたのコードは実行時に期待どおりに機能しますか?
の返品をキャストしてみてください [Test alloc]
に Test*
.
すなわち
Test *t = [(Test*)[Test alloc] initWithContentsOfURL:[NSURL fileURLWithPath:@"/"] error:&error];
所属していません StackOverflow