objective-c - 如何将类属性声明为枚举类型

标签 objective-c iphone

我想声明一个自定义枚举,例如:

enum menuItemType
{
    LinkInternal = 0,
    LinkExternal = 1,
    Image = 2,
    Movie = 3,
    MapQuery = 4
}

作为我的对象的类型:

@interface MenuItem : NSObject {    
    NSMutableString *menuId;
    NSMutableString *title;
    enum menuItemType *menuType;
    NSMutableArray *subMenuItems;
}

但是我不确定我需要把枚举定义放在哪里——如果我把它放在@interface 之前它的语法不正确

最佳答案

只是更新这个,以防有人在我们 future 的时代偶然发现这个。

iOS 6/Mac OS X 10.8 以来,新的 NS_ENUMNS_OPTIONS 宏是首选方式声明枚举类型。

在那种情况下,它看起来像:

typedef NS_ENUM(NSInteger, MenuItemType) {
    LinkInternal = 0,
    LinkExternal = 1,
    Image = 2,
    Movie = 3,
    MapQuery = 4
};

@interface MenuItem : NSObject {    
    NSMutableString *menuId;
    NSMutableString *title;
    MenuItemType menuType;
    NSMutableArray *subMenuItems;
}

有关该主题的好读物:http://nshipster.com/ns_enum-ns_options/

您可能还想遵守 Apple 的枚举命名约定,并采用类似的方式:

typedef NS_ENUM(NSInteger, MenuItemType) {
    MenuItemTypeLinkInternal = 0,
    MenuItemTypeLinkExternal = 1,
    MenuItemTypeImage = 2,
    MenuItemTypeMovie = 3,
    MenuItemTypeMapQuery = 4
};

希望这会有所帮助。

关于objective-c - 如何将类属性声明为枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2116347/

相关文章:

objective-c - 如何将 NSButton 插入 NSTextView 中? (排队)

iOS Swift 后台位置监控

ios - MFSideMenu 侧 Viewcontroller 未导航到 Tabbarcontroller 中的特定 View Controller

objective-c - 如何在 Objective-C 中创建实例变量

iphone:如何同步 2 个 NSMutableArrays 的内容?

ios - 在设备上测试时核心数据实体丢失

iphone - 应用程序运行时 Xcode 4.5 选项卡消失

ios - 在apple store上发布需要ipad版本吗?

iphone - 将对象添加到 NSMutableArray 不适用于 iPhone 应用程序

objective-c - 有没有办法调整 iPhone 中模态视图屏幕的大小