nonnull
适用于 C 函数,但不适用于 obj-c 方法。为了清楚起见,我建议这样做
- (void)doSomethingWithRequiredString:(NSString * __attribute((nonnil)))requiredString
bar:(NSString *)optionalString);
或(更像非空)
- (void)doSomethingWithRequiredString:(NSString *)requiredString
bar:(NSString *)optionalString)
__attribute((nonnil(0)));
我对是否有一个好的技术原因感到困惑。我知道 clang 只能真正使用该属性进行编译时检查或静态分析,但这似乎是正交的。有什么强有力的理由不这样做吗?