2017-10-13 4 views
0

(NSError **)errorの宣言で、NULL値可能性のあるキーワードを複数レベルのポインタタイプに関連付ける方法はありますか?ハンドル_NonnullまたはマルチレベルポインタタイプのNullable

- (void)loadSessionForUserId:(nonnull NSString *)userId error:(NSError **)error { ... }

あなたが明示的にNULL値を許可するかどうかを追加したい場合は、私はエラーがNULL可能にしたいと“Pointer is missing a nullability type specifier (__nonnull or __nullable)”

enter image description here

+0

関連:https://stackoverflow.com/questions/37618830/objec tive-c-null-for-output-parameters – rmaddy

答えて

1

を取り除くには、最も外側の(最後の)ポインタに_Nullableを適用する必要があります。しかし、これは間接的なポインタのデフォルトであるため、必要ではありません。あなたの現在のコードが正しいと望ましいです。

- (void)loadSessionForUserId:(nonnull NSString *)userId error:(NSError ** _Nullable)error; 
+0

「エラー:(NSError ** _Nullable)エラー」には同じNullabilityの問題があります。 – lal

0

トリート警告としてエラーがプロジェクトのためにオンになっている場合は、Xcodeの9.マルチレベルポインターのため、この形式に、警告、またはエラーを取得している場合:

ソリューション:

error:(NSError *_Nullable* _Nullable)error

その他のエラーバリエーション:

a)は、コンパイル時エラーでerror:(NSError ** _Nonnull)error 結果にNULL可能タイプせずにコンパイル時エラーPointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

NSErrorため

開きレーダー**でerror:(NSError ** _Nullable)error 結果と Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)

c)はとして表示コンパイル時エラーにerror:(NSError * _Nonnull *)error 結果とNullability keyword 'nullable' cannot be applied to multi-level pointer type 'NSError *__autoreleasing *’

B)抑止できない警告 http://www.openradar.me/21766176

+0

ああ;あなたのインターフェイスの周りに 'NS_ASSUME_NONNULL_BEGIN'と' NS_ASSUME_NONNULL_END'を追加していません。通常は、すべてのパラメータを個別にマーキングするよりも優先されます。それを使って、マークすることなく、期待される 'NSError **'の動作を得るでしょう。 ( "間違っていると仮定する"は、ほとんど間違いないので、実際には間接的にはnullを仮定します)。 –