Apple公式Swiftドキュメントが追加。Objective-Cや既存APIとの連携について解説
公開日:
:
ニュース, 役立ち情報 Objective-C, Swift
Swift言語についてのAppleの最初の公式マニュアル
WWDC2014でのSwift言語の登場アナウンス以降、AppleはiBooksを使ってSwift言語のマニュアル”The Swift Programming Language”を配布している。こちらを入手するには、勿論iBooksと対応OSが必要となる、というのは以前の紹介のとおり。
ただ、こちらのマニュアルはこっそりとWEB上の公開領域にも上げられていた。最初にiBooks限定で公開したのは、単純にインストールベースを増やしたかったからだろう。したがって、現在では他のOSや旧iOS/OSX使いでも言語仕様などについて一瞥、把握する事ができるようになっている。
The Swift Programming Language
SwiftとObjective-C、既存APIとの連携マニュアルが追加
先日6月15日には、同様にして公式マニュアル第2段が公開領域に上げられた。タイトルは”Using Swift with Cocoa and Objective-C”。こちらのマニュアルでは、それまでObjective-Cを使用してiOS/OSXアプリケーションを開発していた人向けに、SwiftからObjective-C、あるいはその逆を呼び出す仕組みや、移行にあたってのノウハウなどが語られている。
Using Swift with Cocoa and Objective-C
SwiftとObjective-Cの共存は可能。しかし…
第2段の内容は、WWDCで語られていた通り、SwiftとObjective-Cのコードは混在する事が可能というものだ。片方の言語で書かれたクラスをもう片方から呼び出して、あたかも読み込んだ側の言語で書かれたクラスとしてシームレスに利用する事が可能となっている。
ご存知の通り、C言語の上にオブジェクト指向を建て増したObjective-Cでは、プロトタイプ宣言の.hファイルと、実装部分の.mファイルの2種類が必要であった。それに対してSwiftの場合は.swiftファイル1種類があるのみであるが、言語を横断して利用する場合には、これらのファイルに加えて変換のための別のヘッダファイル(必要タイミングでXcodeによって用意される)を付け加える事となる。この辺りで混乱しているユーザをどうも多く見る。
SwiftとObjective-Cの共存方法をマニュアルより
まず、同一ターゲット内での共存方法。Objective-CクラスをSwiftで利用する場合には、(プロダクトモジュール名)-Bridging-Header.hというファイルを作成することになる。プロジェクト内でObjective-CファイルとSwiftファイルが混在したタイミングにXcodeでダイアログが出て、自動的にこのファイルを作成してくれるのだが、作成されたファイル内で利用したいクラスの.hファイルを明示的にimportする必要がある。そうすれば、以降はSwiftコード内でのimport無しで定義済みのクラスとしてインスタンスが作成できる(ターゲットがフレームワークの場合には、Bridging Headerは使わず、umbrellaヘッダーで利用したいクラスの.hファイルを明示的にimportすることになる)。
SwiftクラスをObjective-Cで利用する場合には、(プロダクトモジュール名)-Swift.hというファイルが勝手に作成されているので、今度はこれを通常のObjective-Cクラスの.hファイルと同じように.mファイル中でimportして実装する。ターゲットがフレームワークの場合も同じ。
続いて、別のターゲットの外部フレームワークを読み込む場合。これはなんと、そのフレームワークがどの言語か、あるいは言語混在状態で書かれていようが、通常の外部フレームワーク読み込みと同じ方法で読み込む事ができる(まあ、そんなに驚く事ではないか)。
SwiftクラスをObjective-Cクラスとして使う際の注意点
一点だけ注意点があって、Objective-Cクラスを継承していないSwiftクラスをObjective-C側から使おうとする場合、Swiftファイル側でクラス名・プロパティ名・メソッド名のそれぞれの前に@objc属性でObjective-C側から呼び出される際の名称を宣言しなくてはいけない。
@objc(ClassName) class ClassName { //Swiftコードによる処理実装 } |
このようにすると、Objective-C側からClassNameという名前で呼び出す事ができるようになる。今回発表されたSwiftの新機能で、アルファベット以外(日本語や中国語や絵文字やら)の名前をクラス名、プロパティ名などに使えるようになったというものがあったが、Objective-C側では対応していないので、Objective-C側から呼び出せる名称をつける際にも@objc属性を使う。
@objcをいちいち書き込むのも面倒なので、おそらくほとんどの場合はNSObjectなどのObjective-Cクラスを継承する形になるだろう。
class ClassName: NSObject { //Swiftコードによる処理実装 } |
Objective-Cクラスを継承すると、@objcの辺りの処理を自動的にやってくれるわけである。
ちなみにSwiftクラスをObjective-C側に読み込んで、その子クラスを作る事はできないようだ。
関連記事
-
Xcode6 beta3が登場、Swiftの仕様アップデートあり。これは解説書の購入は”待ち”かも
Appleの新言語Swiftの解説書籍が、WWDC2014での発表から1ヶ月経つか経たぬ内から発売さ
-
AppleがSwift情報を発信する公式ブログを開始 そしてXcode6 betaは無償ダウンロード可に
長年のAppleウォッチャーほど、さほど驚きなく受け容れられるニュースかもしれない。 Appl
-
Swift1.0を含むXcode6のGMが公開
大体2週間の間隔を空けてbetaのヴァージョンナンバーが上がり続けていたXcode。9月9日のiOS
-
Swiftのアーリースターターのための情報&便利なサイト
Swiftが発表された!さあ習得するぞ!と意気込んでも、まだベータ版の状態であるXcode 6をAp
-
Xcode6 beta5が登場。Swift仕様も変更に次ぐ変更…
まだベータ版であるから仕方ないとは言え、Xcode6 beta3の無償提供開始から一ヶ月を経たずして
-
Swiftが今年後半を目処にオープンソース化!そしてSwift 2
一時期iOSとOSXの開発からは離れていたけれど、久しぶりの大きなニュースに吃驚! Swift
-
Appleが新開発言語のSwiftを発表!とりあえずサイトを作ってみた
2014年の6月2日(日本時間6月3日)に行われたWWDC2014の基調講演で、Apple社が新開発
-
Swiftの解説書は電子書籍方面で出始めたみたい
一応まだ言語仕様が固まっていないと思われる、Swift。2014年6月2日、WWDCでの登場から大盛
-
待望のRetina iMacが登場! iOSアプリの開発が楽になる?
10月16日(日本時間17日)に行われたAppleの新製品発表会。大方の予想通り(リーク情報通り)i
-
iMac21.5インチエントリモデルが108,800円で登場&Xcode6 beta2のリリース
iOS/OSXプログラミング用に、手頃な価格で買えるMac一式を探している向きには朗報だろうか。Ap