5

私はObjective-CでSwiftのある時点で使用される一連のツールを書いていますので、ジェネリックとnull値を使用しています。この状況で私は何をすべきでしょうか?両方のポインタのためPointer is missing a nullability type specifier...NSError、Swift、null nullability

- (NSArray<MyObj *> * __nullable)foo:(NSError **)error; 

現在、私は警告を取得しています!私は私が行うことになっていないんだということはほぼ確実だ:

- (NSArray<MyObj *> * __nullable)foo:(NSError * __autoreleasing __nullable * __nullable)error; 

アムI?

答えて

18

スウィフトブログエントリNullability and Objective-C状態は:

特定のタイプNSError **はそれほど頻繁には常にNULL可能NSError参照にNULL可能ポインタ であると仮定され メソッドパラメータを介して、エラーを返すために使用されます。 、監査済み領域内

NS_ASSUME_NONNULL_BEGIN 

@interface MyClass : NSObject 
- (NSArray<MyObj *> * _Nullable)foo:(NSError **)error; 
@end 

NS_ASSUME_NONNULL_END 

しかし、この発言は、ルール「監査済地域」の の例外としてリストされ、そして 内のみに監査領域に適用されるものと思われます任意のシンプルなポインタ型はnonnullと仮定されます(上記のようにいくつかの例外はNSErrorとなります)。監査された領域の外側

、あなたが実際にNULL可能型指定が欠落に関する警告を避けるために、明示的に

- (NSArray<MyObj *> * _Nullable)foo:(NSError * _Nullable * _Nullable)error; 

を記述する必要があります。

_NullableはXcode 7で使用されている新しい構文で、__nullableを置き換えます)

関連する問題