【问题标题】:Objective-C: where and how should I declare enums?Objective-C:我应该在哪里以及如何声明枚举?
【发布时间】:2011-10-18 05:00:01
【问题描述】:

朋友们,美好的一天。 我是Objective-C的新手。我想在课堂上使用枚举并将其公开。 我已经了解如何声明枚举 (http://stackoverflow.com/questions/1662183/using-enum-in-objective-c),但我不明白应该在哪里声明它们。

我试过了:

@interface MyFirstClass : NSObject {
typedef enum myTypes {VALUE_A, VALUE_B, VALUE_C} MyTypes;
}

或:

@interface MyFirstClass : NSObject {
@public
   typedef enum myTypes {VALUE_A, VALUE_B, VALUE_C} MyTypes;
}

但编译器抛出错误:“typedef 之前的预期说明符限定符列表”。

怎么了?

【问题讨论】:

    标签: objective-c enums


    【解决方案1】:

    .h

    typedef enum myTypes {VALUE_A, VALUE_B, VALUE_C} MyTypes;
    
    @interface MyFirstClass : NSObject {
    
     MyTypes type;
    
     }
    

    .m 文件

       type=VALUE_A;
    

    【讨论】:

    • 在这种情况下,枚举的可见性是什么? (我说的不是“类型”变量,我说的是接口外的枚举)。
    • 如果您想在其他类的代码中的某处使用此 myTypes 枚举,则必须直接或间接在该类中导入 MyFirstClass.h。所以 enum 的可见性是它被定义的地方。如果你想在你拥有的所有类中使用枚举,那么只需创建单独的 EnumConstants.h 文件,将它们全部放在那里,将它们导入 YourProject-Prefix.pch。所以它对你所有的班级都是可见的。我希望它能帮助别人。谢谢!
    【解决方案2】:

    @interface 声明之外。

    typedef enum myTypes {VALUE_A, VALUE_B, VALUE_C} MyTypes;
    
    @interface MyFirstClass : NSObject {
    }
    
    @end
    

    【讨论】:

      【解决方案3】:

      您可以创建一个头文件 (*.h) 并执行以下操作以匹配您的枚举变量。

      //  EnumConstants.h
      
      
      #ifndef EnumConstants_h
      #define EnumConstants_h
      
      typedef enum {
          VEHICLE,
          USERNAME
      } EDIT_TYPE;
      
      typedef enum {
          HIGH_FLOW,
          STANDARD_FLOW
      } FLOW_TYPE;
      
      
      #endif
      

      用途:

      #import "EnumConstants.h"
      
      UISwitch *onOffSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(self.tableview.frame.size.width-75, 26, 0, 0)];
      onOffSwitch.tag =STANDARD_FLOW;
      

      【讨论】:

      • 你的宏在做什么?
      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 1970-01-01
      相关资源
      最近更新 更多