在可可中定义enum ivar

And*_*nov 1 cocoa enums cocoa-touch objective-c

假设我有一个叫做的课TrafficLight,我想有一个属性currentColor.我知道可以创建一个枚举来表示固定选择池中的当前颜色,如下所示:

enum currentColor { CurrentlyRed = 0, CurrentlyYellow = 1, CurrentlyGreen = 2 };

但现在我如何将它变成Cocoa类中的ivar?如果我将它作为属性,通常使用的属性属性是什么?枚举定义是否属于实现范围?它是否属于任何特定方法?(比如init?)

jrt*_*ton 5

你不能转发声明枚举,所以定义应该在类的接口文件中,并且属性声明为(非原子,assign)和你的枚举类型:

typedef enum { 
    CurrentlyRed = 0, 
    CurrentlyYellow = 1, 
    CurrentlyGreen = 2 
} PossibleColours;

@interface ...

@property (nonatomic, assign) PossibleColours currentColour;
Run Code Online (Sandbox Code Playgroud)

这样,类的类和消费者可以访问定义.