熟悉OC--5:用枚举表示状态、选项、状态码

2023-11-22 08:17:55 浏览数 (2)

枚举只是一种常量命名方式

  • 某种状态值可以使用枚举
代码语言:javascript复制
typedef NS_ENUM(NSInteger,LoginState){
    LoginStateSuccess,
    LoginStateFail,
};
  • 在定义选项的时候,若这些选项可以彼此组合,各个选项之间可以通过按“按位或操作符”来组合,那么枚举值中可定义为2的幂
代码语言:javascript复制
typedef NS_ENUM(NSInteger, UIInterfaceOrientation) {
    UIInterfaceOrientationUnknown            = 0,
    UIInterfaceOrientationPortrait           = 1 << 0,
    UIInterfaceOrientationPortraitUpsideDown = 1 << 1,
    UIInterfaceOrientationLandscapeLeft      = 1 << 2,
    UIInterfaceOrientationLandscapeRight     = 1 << 3,
}

- (UIInterfaceOrientation)supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window{
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
}
  • 在switch中使用枚举来定义状态机,最好不要用default,如果使用default,当枚举中添加一个值,编译器不会发出警告,但是switch中不加default,编译器会有警告提示信息
代码语言:javascript复制
typedef NS_ENUM(NSInteger,LoginState){
    LoginStateSuccess,
    LoginStateFail,
};

- (void)change:(LoginState)state{
    switch (state) {
        case LoginStateFail:
            break;
        case LoginStateSuccess:
            break;
    }
}
  • 重点
  1. 应该用枚举值来表示状态机的状态
  2. 多个选项可以同时存在,可以使用枚举类型,可以将各选项值定义为2的幂,以便通过按位或操作将其组合 3.处理switch语句中不要带有default分支,这样加入新枚举值之后,编译器会提示开发者

参考

Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

0 人点赞