如何将枚举分配给变量并稍后访问其值?我认为这会很简单,但是每次我尝试将enum
值分配给一个变量(Xcode 中没有出现类型不匹配或警告)时,我的应用程序都会因EXC_BAD_ACCESS错误而崩溃。
这是我enum
在头文件 ( BarTypes.h
) 中设置的方法:
typedef enum {
BarStyleGlossy,
BarStyleMatte,
BarStyleFlat
} BarDisplayStyle;
那里没有问题(至少阅读和使用这些值)。但是,当我创建一个可以存储其中一个enum
值(BarStyleGlossy、BarStyleMatte或BarStyleFlat)的变量然后尝试设置该变量时,应用程序会崩溃。这是我设置和使用变量的方法:
//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;
}
为什么会在这里崩溃?如何将枚举的值存储在变量中?我认为这个问题与我缺乏了解有关enums
,但是如果我遵循传统的变量设置和分配等,这应该可以工作。关于我做错了什么的任何想法?
请注意,我是enum
s 的新手,所以我在这里的词汇可能有点混乱(请原谅我 - 如果您知道我想说什么,请随时进行编辑)。
我enums
在网上找到了一些参考资料:
- Objective-C 中的 typedef 枚举是什么?
- 在 Objective C 中使用枚举类型作为属性
- 如何创建全局枚举
- 如何在 Objective-C 中定义和使用 ENUM?
- 我还尝试搜索Apple 的开发者网站,但只找到了有关 Apple API 类型的结果(例如 Foundation、UIKit 等)
编辑:这是我调用该setupBarStyle
方法的方式:
BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];