Assign Enum to Variable in Objective-C
如何将枚举赋给变量并在以后访问其值?我认为这很简单,但每次我试图将
以下是我在头文件(
1 2 3 4 5 | typedef enum { BarStyleGlossy, BarStyleMatte, BarStyleFlat } BarDisplayStyle; |
没有问题(至少读取和使用这些值)。但是,当我创建一个可以存储
1 2 3 4 5 6 7 8 9 10 | //Header @property (nonatomic, assign, readwrite) BarDisplayStyle barViewDisplayStyle; //I've also tried just using (nonatomic) and I've also tried (nonatomic, assign) //Implementation @synthesize barViewDisplayStyle; - (void)setupBarStyle:(BarDisplayStyle)displayStyle { //This is where it crashes: self.barViewDisplayStyle = displayStyle; } |
为什么它会在这里坠毁?如何将枚举值存储在变量中?我认为这个问题与我对
请注意,我刚接触过
我在网上找到了一些关于
- 什么是Objective-C中的typedef枚举?
- 在目标C中使用枚举类型作为属性
- 如何创建全局枚举
- 如何在Objective-C中定义和使用枚举?
- 我还尝试搜索苹果的开发者站点,但只得到了苹果API的类型(Ex.Fuffic,UiKIT等)的结果。
编辑:下面是我如何调用
1 2 | BarView *bar = [[BarView alloc] init]; [bar setupBarStyle:displayStyle]; |
以防万一有人仍在试图找出如何将枚举值赋给枚举类型的变量或属性…下面是一个使用属性的示例。
在头文件中…
1 2 3 4 5 6 7 8 9 10 11 12 13 | @interface elmTaskMeasurement : NSObject typedef NS_ENUM(NSInteger, MeasurementType) { D, N, T, Y, M }; @property(nonatomic) MeasurementType MeasureType; @end |
在创建对象的文件中…
1 2 3 | elmTaskMeasurement *taskMeasurement = [[elmTaskMeasurement alloc] init]; taskMeasurement.MeasureType = (MeasurementType)N; |
我自己也犯了这个错误,但这个错误是由我自己创建的另一个错误引起的。
我的属性"MyApplicationState"的设置者如下:
1 2 3 4 | -(void)setApplicationStyle:(myApplicationStyle)applicationStyle{ self.applicationStyle = applicationStyle; //some more code } |
当然,这会导致一个无休止的循环,因为在setter中,设置会被一次又一次地调用。
它必须是:
1 2 3 4 | -(void)setApplicationStyle:(myApplicationStyle)applicationStyle{ _applicationStyle = applicationStyle; //some more code } |
您实现的方法称为