Вы можете использовать макрос NS_SWIFT_UNAVAILABLE
для перечислителей:
typedef NS_ENUM(unsigned, Foo) {
bar,
baz,
count NS_SWIFT_UNAVAILABLE("Count does not represent a case")
};
NS_SWIFT_UNAVAILABLE
, как и любой __attribute__
, который вы хотите применить к перечислителю, идет после имени перечислителя, но перед =
если вам нужно.
Макрос определяется, если вы включите <Foundation/Foundation.h>
.Если вы включите CoreFoundation, вы получите CF_SWIFT_UNAVAILABLE
, что делает то же самое.Если вы не включите ни то, ни другое, вы можете использовать длинную форму:
__attribute__((availability(swift, unavailable, message="your message")))
Перечислители, помеченные NS_SWIFT_UNAVAILABLE
, не будут отображаться при автозаполнении и не вызовут проблем со сборкой, если они не обработаны.на Свифт стороне.Если вы попытаетесь его использовать, вы получите серьезную ошибку, включающую ваше сообщение.
Имейте в виду, что, начиная с Swift 5, вам может потребоваться использовать NS_CLOSED_ENUM
вместо NS_ENUM
если ваша цель - избежать default
дела.