Objective-CとSwiftの互換のために気をつけるべきこと

概要

Swift が出て以降、Xcode では下記のように Objective-C と Swift のメソッドが互いの Syntax に合わせて書きやすいように変換されるようになっています。

ただし、この変換が正しく機能する為には戻り値やメソッド名・記述方法に決まりがあるようなので
今回は、需要が多そうな Objective-C から Swift への互換についてまとめます。

init method

Objective-C の init method が正しく Swift-style initializer に変換される条件

  • 戻り値が “instancetype”
    “id” でも OK だが Apple のコードは全て “instancetype” に切り替わっているので “instancetype” が推奨
    “PersonData *” のようにクラス名を明示したものは NG
  • “init” または “initWith” prefix がついている事

factory method

Objective-C の factory method が正しく Swift-style initializer にマッピングされる条件

  • 戻り値が “PersonData *” のようにクラス名を明示していること
    “instancetype” でも OK だがこちらも Apple のコードにあわせると “instancetype” は非推奨
    “id” は NG
  • factory method のメソッド名はクラス名の後方一致でなければならない(単語の途中はNG)

enum

NS_ENUM は swift の enum として扱われるが、enum は少し挙動が変わる。

参考

とりあえず現状わかっているのはこんな感じ。
何か見つけたら追記します。

スポンサーリンク
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。