2017-03-23 9 views

答えて

3

Objective-Cコンパイラ(clang)の新しいバージョンでは、パラメータ、戻り値、変数、およびプロパティをnull値として許可するかどうかを定義できます。

これは、一般的に_Nullableまたは_Nonnull属性を追加することで、宣言内の各ポインタのために行われます。これは、あなたがfetch関数にnilを渡すことができないことを意味

int fetch(int * _Nonnull ptr); 

たとえば、すべての(またはほとんどの)ポインタをnull以外にしたい場合があります。ヘッダーファイルのすべてのポインタに_Nonnullを追加するのは面倒です。これを簡単にするために、ファイルの先頭にプラグマを追加し、最後に対応する終了プラグマを追加することができます。これにより、すべてのポインタがnull以外にデフォルト設定されます。 1つまたは2つをヌル可能にする必要がある場合は、そのポインタだけに_Nullableを追加できます。

iOSとmacOSでは、_Pragma("clang assume_nonnull begin")_Pragma("clang assume_nonnull end")の代わりにNS_ASSUME_NONNULL_BEGINNS_ASSUME_NONNULL_ENDを使用できます。

もちろん、null以外の値ではなくnullableをデフォルトにする場合は、「nullable」バージョンもあります。

clangとnull可否属性の詳細については、https://clang.llvm.org/docs/AttributeReference.html#nullability-attributes

関連する問題