Xcode недавно добавил __nonnull
, __nullable
и т. Д. Атрибуты. Тем не менее, они не поддерживаются более старыми версиями clang и других компиляторов.Как использовать Objective-C __nonnull в обратном режиме?
Как использовать эти атрибуты совместимым образом?
Я надеялся, что-то, как это будет работать:
#ifndef NS_ASSUME_NONNULL_BEGIN
#define __nonnull
#endif
но мне кажется, что NS_ASSUME_NONNULL_BEGIN
не реальный макрос, и это «не определено» в Xcode7.
И это имело бы смысл, чтобы это работало:
#if !defined(__is_identifier) || __is_identifier(__nonnull)
#define __nonnull
#define __nullable
#endif
но Xcode 6 дросселей на том, что с «лексема не является действительным бинарным оператором в препроцессор подвыражения» ошибка.