Я объявил enum в своем файле реализации, как показано ниже, и объявил переменную этого типа в моем интерфейсе как PlayerState thePlayerState; и использовал переменную в моих методах. Но я получаю ошибки, утверждающие, что это не объявлено. Как правильно объявить и использовать переменную типа PlayerState в моих методах ?:
В файле .m
@implementation View1Controller
typedef enum playerStateTypes
{
PLAYER_OFF,
PLAYER_PLAYING,
PLAYER_PAUSED
} PlayerState;
в .h файле:
@interface View1Controller : UIViewController {
PlayerState thePlayerState;
в каком-то методе в .m файле:
-(void)doSomethin{
thePlayerState = PLAYER_OFF;
}
iphone
objective-c
c
RexOnRoids
источник
источник
Ответы:
Вы
typedef
должны быть в файле заголовка (или в другом файле, который#import
добавлен в ваш заголовок), потому что в противном случае компилятор не будет знать, какой размер сделатьPlayerState
ivar. Кроме этого, это выглядит нормально для меня.источник
NS_ENUM
в Objective-C, если хотите, чтобы ваше перечисление было доступно в коде Swift.typedef
объявленный в.m
файле, и он компилируется и работает хорошо.Apple предоставляет макрос для лучшей совместимости кода, включая Swift. Использование макроса выглядит следующим образом.
Документировано здесь
источник
NS_ENUM
), так как оно более современное и теперь требуется в Objective-C, если вы хотите, чтобы ваше перечисление было доступно в коде Swift.В .h:
источник
В текущих проектах вы можете использовать макросы
NS_ENUM()
илиNS_OPTIONS()
.источник
NS_ENUM
в Objective-C, если хотите, чтобы ваше перечисление было доступно в коде Swift.Вот как Apple делает это для таких классов, как NSString:
В заголовочном файле:
Обратитесь к руководству по кодированию на http://developer.apple.com/
источник
Я рекомендую использовать NS_OPTIONS или NS_ENUM. Вы можете прочитать больше об этом здесь: http://nshipster.com/ns_enum-ns_options/
Вот пример из моего собственного кода с использованием NS_OPTIONS, у меня есть утилита, которая устанавливает подслой (CALayer) на слое UIView для создания границы.
Ч. файл:
.M файл:
источник