在Objective-C中向前声明ns_选项

在Objective-C中向前声明ns_选项,objective-c,enums,options,forward-declaration,Objective C,Enums,Options,Forward Declaration,如何在Objective-C中转发声明NS_选项 NS_枚举的相关SO问题: 苹果开发者论坛上未回答的问题: typedef NS_选项(NSInteger、mss选项){ MSOptionNone=0, MSOptionName=1与NS_ENUM的答案完全相同,因此来自的答案都是有效的 要向前声明您的NS\u选项,您有两种解决方案: 解决方案1 解决方案2 这两种解决方案都可以正常工作。使用Xcode 9.3.1和Xcode 10.1进行测试。 演示在。可能重复您是否确实尝试过此方法?对于解

如何在Objective-C中转发声明NS_选项

NS_枚举的相关SO问题:

苹果开发者论坛上未回答的问题:

typedef NS_选项(NSInteger、mss选项){
MSOptionNone=0,

MSOptionName=1与NS_ENUM的答案完全相同,因此来自的答案都是有效的

要向前声明您的NS\u选项,您有两种解决方案:

解决方案1 解决方案2 这两种解决方案都可以正常工作。使用Xcode 9.3.1和Xcode 10.1进行测试。

演示在。

可能重复您是否确实尝试过此方法?对于解决方案1,我得到“使用不同类型重新定义”,对于解决方案2,我得到“声明不声明任何内容”。这是Xcode 10.1。也许自从你试用后情况发生了变化?@Baxissimo它也能与Xcode 10.1完美配合。演示在。你可能只是做错了其他事情。是的,你的示例似乎工作正常。不确定区别是什么。我试图将你代码中的设置更改为更像我们的应用程序,但所有这些修改都是错误的很好。也许我有一个是NSInteger,另一个是NSUInteger。这会解释我得到的“不同类型”错误。虽然我认为我三次检查了两个声明的类型是相同的。不幸的是,我失去了在我们的应用程序中的位置。我试图做到这一点。
typedef NS_OPTIONS(NSInteger, MSSOption) {
    MSSOptionNone       = 0,
    MSSOptionName       = 1 << 0,
    MSSOptionEmail      = 1 << 1,
    MSSOptionTelephone  = 1 << 2
};
typedef NS_ENUM(NSInteger, MSSOption);
typedef NS_OPTIONS(NSInteger, MSSOption);