在Objective-C中将枚举赋值给变量
在Objective-C中将枚举赋值给变量
如何将枚举分配给变量并稍后访问其值?我以为这很简单,但每次尝试将枚举值分配给变量(在Xcode中没有类型不匹配或警告)时,我的应用程序都会崩溃并显示“EXC_BAD_ACCESS”错误。
以下是我在头文件(BarTypes.h
)中设置枚举的方式:
typedef enum { BarStyleGlossy, BarStyleMatte, BarStyleFlat } BarDisplayStyle;
在那里没有问题(至少可以读取和使用值)。但是,当我创建一个可以存储其中一个枚举值(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; }
为什么它在这里崩溃?如何将枚举的值存储在变量中?我认为问题在于我缺乏对枚举的理解,但如果我按照常规变量设置和分配等操作,则应该可以工作。您对我所做错误的任何想法吗?
请注意,我是新手,因此我的词汇可能有点混乱(请原谅我,并随时进行编辑,如果您知道我想说什么)。
我在网上找到了一些关于枚举的引用:
- Objectve-C中的typedef枚举是什么?
- 在Objective-C中将枚举类型用作属性
- 如何创建全局枚举
- 如何定义和使用Objective-C中的枚举?
- 我还尝试在Apple的开发者网站上搜索,但只能找到有关Apple API(例如Foundation、UIKit等)类型的结果
编辑:以下是我如何调用setupBarStyle
方法:
BarView *bar = [[BarView alloc] init]; [bar setupBarStyle:displayStyle];
admin 更改状态以发布 2023年5月23日
假如有人仍在想如何将枚举值分配给枚举类型的变量或属性...
这里有一个使用属性的示例。
在头文件中...
@interface elmTaskMeasurement : NSObject typedef NS_ENUM(NSInteger, MeasurementType) { D, N, T, Y, M }; @property(nonatomic) MeasurementType MeasureType; @end
在创建对象的文件中...
elmTaskMeasurement *taskMeasurement = [[elmTaskMeasurement alloc] init]; taskMeasurement.MeasureType = (MeasurementType)N;