nonnull
работает для C-функций, но не obj-c-методов. Чтобы быть ясным, я предлагаю это
- (void)doSomethingWithRequiredString:(NSString * __attribute((nonnil)))requiredString
bar:(NSString *)optionalString);
или (больше как nonnull)
- (void)doSomethingWithRequiredString:(NSString *)requiredString
bar:(NSString *)optionalString)
__attribute((nonnil(0)));
Я озадачен тем, есть ли хорошая техническая причина. Я понимаю, что clang мог использовать только атрибут для проверки времени компиляции или статического анализа, но это кажется ортогональным. Есть ли веская причина не иметь этого?