初めに
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
を使おう。