【发布时间】:2013-06-01 17:31:23
【问题描述】:
如何将enum 分配给变量并稍后访问其值?我认为这会很简单,但每次我尝试将 enum 值分配给变量(Xcode 中没有出现类型不匹配或警告)时,我的应用程序都会因 EXC_BAD_ACCESS 错误而崩溃。 p>
以下是我在头文件 (BarTypes.h) 中设置 enum 的方法:
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 缺乏了解有关,但是如果我遵循传统的变量设置和分配,等这应该工作。关于我做错了什么有什么想法吗?
请注意,我是 enums 的新手,所以我在这里的词汇可能有点混乱(请原谅我 - 如果您知道我想说什么,请随时进行编辑)。
我在网上找到了一些关于 enums 的参考资料:
- What is a typedef enum in Objective-C?
- Using enum types as properties in Objective C
- How to create global enum
- How do I define and use an ENUM in Objective-C?
- 我也尝试搜索 Apple's Developer site,但只找到了有关 Apple API 类型(例如 Foundation、UIKit 等)的结果
编辑:这是我调用setupBarStyle 方法的方式:
BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];
【问题讨论】:
-
显示对 setupBarStyle 方法的调用
-
@Wain 当然会!我对我的问题进行了编辑(编辑 #1)
-
编译并运行您的代码,没有任何崩溃。请添加崩溃日志。
标签: enum ios objective-c enums runtime-error