自動参照カウント:明示的な所有権なしで、コンストタイプ「nserror *」へのポインター
-
25-10-2019 - |
質問
私のコードの一部をiOS 5 SDKと互換性があるように更新する際に、Xcodeで「Objective-C Arcに変換」を使用してコードをリファクタリングしようとし、エラーを受け取りました。エラーは、.hファイルのインスタンス変数で発生します。
NSError **_error;
エラーには、「明示的な所有権なしで、非コンストタイプ「nserror *」へのポインター」と書かれています。これを修正するにはどうすればよいですか?
解決
保存するとき NSError
インスタンス変数のオブジェクトは、それを単純なポインターとして宣言する必要があります。
@interface Foo : NSObject
{
NSError *_errror;
}
NSError **
間接的に戻るためにのみ使用されます NSError
メソッドから発信者へのオブジェクト。インスタンス変数に保存するのは(おそらく)エラーです。
他のヒント
で説明されている生涯予選のいずれかを使用できます アークリリースノートへの移行
nserror **の場合、__autorleasingを使用するので、ニコライが提供する例は次のようになります
@interface Foo : NSObject
{
NSError * __autoreleasing *error;
}
構文は少し奇妙で、Nikolaisのアドバイスに従う必要がありますが、nserror **がこれが機能するはずであると確信している場合は確かです。
所属していません StackOverflow