nonnull
C 関数では機能しますが、obj-c メソッドでは機能しません。明確にするために、私はこれを提案しています
- (void)doSomethingWithRequiredString:(NSString * __attribute((nonnil)))requiredString
bar:(NSString *)optionalString);
または(非nullに似ています)
- (void)doSomethingWithRequiredString:(NSString *)requiredString
bar:(NSString *)optionalString)
__attribute((nonnil(0)));
技術的に正当な理由があるのかどうか、私は頭を悩ませています。私は、clang がコンパイル時のチェックまたは静的解析のために属性を実際にしか使用できないことを理解していますが、それは直交しているようです。これを持っていない強い理由はありますか?