在Objective-C中将枚举赋值给变量

23 浏览
0 Comments

在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;
}

为什么它在这里崩溃?如何将枚举的值存储在变量中?我认为问题在于我缺乏对枚举的理解,但如果我按照常规变量设置和分配等操作,则应该可以工作。您对我所做错误的任何想法吗?

请注意,我是新手,因此我的词汇可能有点混乱(请原谅我,并随时进行编辑,如果您知道我想说什么)。

我在网上找到了一些关于枚举的引用:

编辑:以下是我如何调用setupBarStyle方法:

BarView *bar = [[BarView alloc] init];
[bar setupBarStyle:displayStyle];

admin 更改状态以发布 2023年5月23日
0
0 Comments

你实现的方法叫做setupBarStyle:,但是你却在对象上调用了setupBarShape:

0
0 Comments

假如有人仍在想如何将枚举值分配给枚举类型的变量或属性...

这里有一个使用属性的示例。

在头文件中...

@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;

0