bbs
oopers.com
5178 OOPer: 2014-07-21 14:30:01
Swiftいろいろ: [7] enum
Using Swift with Cocoa and Objective-C(以下Using本)のUsing Swift from Objective-Cのパートには、Objective-Cからは使えないSwiftの機能が並べてある。
Generics
Tuples
Enumerations defined in Swift
Structures defined in Swift
Top-level functions defined in Swift
Global variables defined in Swift
Typealiases defined in Swift
Swift-style variadics
Nested types
Curried functions
…いろいろあるのだが、この中にenumも入っている訳で。

既存のObjective-Cコードの中ではC言語型のenumをあちこちで使用してたりすると思うのだが、それをSwiftに移行するときに、enumまでSwiftに書き換えちゃうと、その部分がObjective-C側から使えなくなっちまう。

という訳で、クラスの本体はSwift化しても、そのクラス内(と他のObjective-Cクラスから)使われているenumは、Objective-Cコードのまま残しとく。なんてことが必要になる。そこそこの規模のアプリだとクラス数だけでもかなりの数になるから、Swiftへの移行を考えている場合でも(私的にはAppleは2年後くらいには、「新しいAPIはSwiftからしか使えない」とか言い出すと思っているので、さっさと移行した方がいいぞ)、全部いっぺんには難しいだろうから、Objective-Cの部分が残っているって状態にすると二度手間だったりする。

ちなみにenumをC言語likeに記述して、そのヘッダを〜-Bridging-Header.hでimportしてやれば、SwiftからもSwift流enumであるかのように使えてしまう。
 「Objective-Cで記述した方が楽になる」なんて部分が多いって状態にしといて良いものか。