Objective-C中的typedef枚举语句在哪里?
我担心的一个基本问题。 下面的代码工作,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; } ...
您可以在C中有效的Objective-C中的任何位置使用枚举。现在(现在位于接口之上)是枚举的常用位置,它应该是全局可用的。 警告是因为你正在使用typedef
,但实际上并没有定义一个types。 如果你只是想创build一个枚举,这是没有必要的。 您只需使用:
enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4 };
你使用typedef
来定义一个types,这样可以更容易地引用常用的结构/联合/枚举/其他types。 如果select这样做,则应该在枚举定义之后放置一个types的名称,然后可以使用不带enum
关键字的名称来引用enum
。
typedef enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4 } MyColourType; MyColourType colour;
或者,您可以创build枚举并键入具有相同效果的单独命令。
enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4 }; typedef enum ColourType MyColourType;
通过这个,考虑使用Objective-C的NS_ENUM
macros。 拿走它, 苹果文件
::有礼貌的掌声AD作为麦克::
NS_ENUM
和NS_OPTIONS
macros提供了一种定义C语言中的枚举和选项的简洁方法。 这些macros改进了Xcode中的代码完成,并明确指定了枚举和选项的types和大小。 另外,这个语法声明枚举的方式是由较老的编译器正确评估的,而新的可以解释底层的types信息。
语法示例:
typedef NS_ENUM(NSInteger, DRWColourType) { DRWColourTypeBackground, DRWColourTypeLow, DRWColourTypeHigh, DRWColourTypeExtra };
为什么? NSHipster :
这种方法结合了上述所有方法中的优点,甚至为编译器提供了types检查和切换语句完整性的提示。
要么摆脱typedef
,要么提供一个别名的types:
typedef enum X {...} Y;
是的,它会正常工作,因为目标c只是C的超集。你必须为你的枚举提供一个别名,像这样:
typedef enum ColourType { BACKGROUND=1, LOW=2, HIGH=3, EXTRA=4 } MyColourType;
- 如何在创build新logging时使用CloudKit在没有延迟的情况下更新TableView中的数据
- 通过NSNotification从UICollectionView中删除单元格
- 是否可以设置UIDatePicker只有几天(不包括小时,分钟和秒)?
- 什么控制在iTunes中的iPhone应用程序支持的语言列表?
- 使用联系人框架创建新组,CNErrorDomain Code = 2
- AudioOutputUnitStart非常慢
- 导航控制器中的标签栏控制器,如何将新的视图控制器推到tabcontroller?
- 默认情况下iPhone的应用程序通知是否会在Apple Watch上触发,甚至无法创build实际的Watch应用程序?
- cordova-plugin-whitelist工作在Android上但不是iOS(Phonegap Build)