自動参照カウント:明示的な所有権なしで、コンストタイプ「nserror *」へのポインター

StackOverflow https://stackoverflow.com/questions/7804435

質問

私のコードの一部を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 **がこれが機能するはずであると確信している場合は確かです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top