是否可以将枚举范围扩展到Objective-C中的类?

Der*_*key 3 enums objective-c

我是Objective-C的新手并试图弄清楚枚举.有没有办法将枚举范围扩展到类,以便值可以被另一个类使用?像这样的东西:

@interface ClassA {
    typedef enum {
        ACCEPTED,
        REJECTED
    } ClassAStatus;
}
@end

@interface ClassB {
    typedef enum {
        ACCEPTED,
        REJECTED
    } ClassBStatus;
}
@end
Run Code Online (Sandbox Code Playgroud)

虽然这显然不起作用.或者是否有更好的方法来完成枚举?

编辑:我想我的措辞不清楚,但我不是在问如何申报枚举.我知道把它们放在文件的顶部是有效的.我问是否有办法对它们进行范围调整,因此值不是整个文件的全局值.

Dru*_*erB 6

您必须在公共枚举前加上前缀.只需将枚举定义放在类的标题中即可.

// ClassA.h
typedef enum {
    ClassAStatusAccepted,
    ClassAStatusRejected
} ClassAStatus;

@interface ClassA {
    ClassAStatus status;
}
@end


// ClassB.h
typedef enum {
    ClassBStatusAccepted,
    ClassBStatusRejected
} ClassBStatus;

@interface ClassB {
    ClassBStatus status;
}
@end
Run Code Online (Sandbox Code Playgroud)

苹果就是这样做的.

或者你可以使用新的风格:

// UIView.h
typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
    UIViewAnimationCurveEaseInOut,         // slow at beginning and end
    UIViewAnimationCurveEaseIn,            // slow at beginning
    UIViewAnimationCurveEaseOut,           // slow at end
    UIViewAnimationCurveLinear
};
Run Code Online (Sandbox Code Playgroud)