ヘッダファイルの一部にヌルタビリティアノテーションを追加しようとしていましたが、そのブロックがヌルではないと思っていましたが、その後ほとんどすべてのメソッドがNULLを追加する必要がある注釈。以下、このためのNS_ASSUME_NONNULL_ENDの後のヌル性の注釈警告
例コード:
NS_ASSUME_NONNULL_BEGIN
- (void)testMethodWithParameter:(NSString *)par otherParameter:(NSString *)otherPar;
NS_ASSUME_NONNULL_END
- (void)methodThatShouldntNeedAnnotationWithText:(NSString *)txt;
//Warning: Pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
私が間違ってこれらのマクロを理解するだろうか?私はそれがBEGIN/ENDブロック内で監査されると言われていた部分を含んでいると思ったが、外部はすべて依然として_Null_unspecified
これは意図したとおりに動作しているのか、私の考え方は?
NS_ASSUME_NONNULL_BEGIN
- (void)testMethodWithParameter:(NSString *)par otherParameter:(NSString *)otherPar;
NS_ASSUME_NONNULL_END
がに変換されます:だから
- (void)testMethodWithParameter:(nonnull NSString *)par otherParameter:(nonnull NSString *)otherPar;
、NS_ASSUME_NONNULL_BEGIN
の不在は、そのすべてのパラメータを意味するものではありません
私は知りません、私もそれを観察しました。インターフェイスファイルにnull可否アノテーションがあるとすぐに、そのファイルにnull許容*を指定する必要があります。 –
少なくとも、NS_ASSUME_NONNULL_ENDはインターフェイス内で何もしないようです。 Apple Swiftブログのサンプルコードは、 '@ interface'の前に' BEGIN'を、 '@end'の後に' END'を表示しています。たぶんそれはその一部のためのインターフェイスの中で使用されることを意図していないかもしれません。 – NickCE