だから私はメソッドに NSError オブジェクトへのポインターを渡すという通常のことをしています。以前は単純でした:
-(BOOL)foo:(NSString *)string error:(NSError **)error
しかし、ARC では次のようになります。
-(BOOL)foo:(NSString *)string error:(NSError *__autoreleasing *)error
したがって、変数がある場合:
NSError *error = nil;
そして試みます:
[foo:@"a string" error:&error];
エラーが発生します:
Sending 'NSError const __strong*' to parameter of type 'NSError *__autoreleasing*' changes retain/release properties of pointer.
コンパイラがこれを処理するという印象を受けていましたが、それで問題ありません。だから私は間違いを犯します:
__autoreleasing NSError *error = nil;
そして私は警告を受け取ります:
Sending 'NSError *__autoreleasing const *' to parameter of type 'NSError *__autoreleasing*' discards qualifier
私の本当の質問は、なぜ私の NSError が const なのかということです。次の質問は、これをどのように修正するかです。これはここでは非常に基本的な状況であり、現在の ARC では、これを処理する方法がわかりません。