Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Objective-C中的typedef枚举语句在哪里?_Iphone_Objective C_Ios - Fatal编程技术网

Iphone Objective-C中的typedef枚举语句在哪里?

Iphone Objective-C中的typedef枚举语句在哪里?,iphone,objective-c,ios,Iphone,Objective C,Ios,我担心这是一个基本问题。下面的代码可以工作,并且可以识别typedef枚举,但是我收到一条警告消息“空声明中无用的存储类说明符”。我在这里做错了什么吗?这是放置typedef枚举的最佳位置吗 #import <UIKit/UIKit.h> #import "CoreDataBaseTableViewController.h" typedef enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4

我担心这是一个基本问题。下面的代码可以工作,并且可以识别typedef枚举,但是我收到一条警告消息“空声明中无用的存储类说明符”。我在这里做错了什么吗?这是放置typedef枚举的最佳位置吗

#import <UIKit/UIKit.h>
#import "CoreDataBaseTableViewController.h"

typedef enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
};

@interface ColourList : CoreDataBaseTableViewController <NSFetchedResultsControllerDelegate> {

    NSManagedObjectContext* moc;    
    NSFetchedResultsController* fetchedResultsController; 

    ...

    enum ColourType colourTarget;

}

...
#导入
#导入“CoreDataBaseTableViewController.h”
typedef枚举颜色类型{
背景=1,
低=2,
高=3,
额外=4
};
@界面颜色列表:CoreDataBaseTableViewController{
NSManagedObjectContext*主运行中心;
NSFetchedResultsController*fetchedResultsController;
...
枚举colortype colortarget;
}
...

删除
typedef
,或者为类型提供别名:

typedef enum X {...} Y;

是的,它可以正常工作,因为目标c只是c的超集。必须为枚举提供别名,如下所示:

typedef enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
} MyColourType;

您可以在Objective-C中的任意位置放置枚举,该枚举在C中有效。您现在拥有它的位置(在接口上方)是枚举的常见位置,该位置应该是全局可用的。警告是因为您正在使用
typedef
,但实际上没有定义类型。如果您只是想创建一个枚举,则不必这样做。您只需使用:

enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
};
您可以使用
typedef
定义一个类型,这样可以更容易地引用常用的结构/联合/枚举/其他类型。如果选择执行此操作,则应在枚举定义后放置类型的名称,然后可以通过使用该名称而不使用
enum
关键字来引用枚举

typedef enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
} MyColourType;
MyColourType colour;
或者,可以创建枚举并在具有相同效果的单独命令中键入

enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
};
typedef enum ColourType MyColourType;

顺便考虑一下,使用Objto-C的代码> NSnEnUM< /Cord>Me宏。把它拿走,
::广告拿起话筒时,礼貌地鼓掌:

NS_ENUM
NS_OPTIONS
宏提供了一种用C语言定义枚举和选项的简洁方法。这些宏改进了Xcode中的代码完成,并显式指定了枚举和选项的类型和大小。此外,此语法声明枚举的方式可以由较旧的编译器正确计算,也可以由能够解释底层类型信息的较新编译器正确计算

语法示例:

  typedef NS_ENUM(NSInteger, DRWColourType) {
  DRWColourTypeBackground,
  DRWColourTypeLow,
  DRWColourTypeHigh,
  DRWColourTypeExtra
};
为什么

此方法结合了上述所有方法中的最佳方法,甚至为编译器提供类型检查和switch语句完整性提示


警告指向哪一行?有两行,以及typdef的开始和结束,但问题现在已解决。请在查看时查看。非常感谢。事情要清楚得多。在FORTRAN77中,我们没有这些,所以它是全新的好东西。