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

drw*_*drw 2 iphone objective-c ios

我担心的一个基本问题.以下代码有效,并且可以识别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;

}

...
Run Code Online (Sandbox Code Playgroud)

ugh*_*fhw 12

你可以在Objective-C中的任何地方放置一个枚举,它在C中是有效的.你现在拥有它(在界面之上)是枚举的常见位置,它应该是全局可用的.警告是因为您正在使用typedef,但实际上并未定义类型.如果您只是想创建枚举,则没有必要.你只需使用:

enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
};
Run Code Online (Sandbox Code Playgroud)

您可以使用它typedef来定义类型,这样可以更容易地引用常用的结构/联合/枚举/其他类型.如果选择执行此操作,则应在枚举定义之后为该类型设置名称,然后可以使用不带enum关键字的名称来引用枚举.

typedef enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
} MyColourType;
MyColourType colour;
Run Code Online (Sandbox Code Playgroud)

或者,您可以创建枚举并键入具有相同效果的单独命令.

enum ColourType {
    BACKGROUND=1,
    LOW=2,
    HIGH=3,
    EXTRA=4
};
typedef enum ColourType MyColourType;
Run Code Online (Sandbox Code Playgroud)