Xcode недавно добавил атрибуты __nonnull
, __nullable
и т. д. Однако они не поддерживаются более старыми версиями clang и других компиляторов.
Как я могу использовать эти атрибуты совместимым образом?
Я надеялся, что что-то вроде этого сработает:
#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 задыхается от этого с ошибкой «токен не является допустимым бинарным оператором в подвыражении препроцессора».