Edited at

ちゃんとNS_ENUMを使おう、という話

More than 1 year has passed since last update.


初めに

Swift3からObjective-C側で定義されたenumを使うときは

NS_ENUM が使われていないとださいことになるのでちゃんと NS_ENUM を使おう。

今更だが。


実際どうなるか

こんな感じで、2通りのパターンでenumを定義してみる。

#import <Foundation/Foundation.h>


typedef enum : NSInteger {
EnumHogeType1,
EnumHogeType2,
} EnumHoge;

typedef NS_ENUM(NSInteger, EnumFuga) {
EnumFugaType1,
EnumFugaType2
};

すると、使うときにはこうなる。

let hoge: EnumHoge = EnumHogeType1 // .type1とは書けない

let fuga: EnumFuga = .type1 // 逆に、EnumFugaType1 とは書けない

NS_ENUM で定義した方だけがSwift3ぽく使えているのがお分かりいただけるだろうか。


終わりに

ちゃんと NS_ENUM を使おう。