[Swift] C言語,Objective-Cのブリッジ

written: kengo
tag:

Swift1.1とC言語,Objective-C (& Objective-C++)はブリッジできます。一方でブリッジ時に使えなくなるものがあるので、何が使えて何が使えないのかのメモ。

確認事項

方針

そもそもSwiftでそのままブリッジできること自体がびっくりなので、正直これだけでも十分ありがたいです(&いつ打ち切られるか怖い)。様子をみた感じ、現状で特に気にしないといけないのはC言語マクロとポインタという印象です。

C言語マクロに関しては正直全滅とみなして、Swift用に作り直したほうがよさそうな雰囲気です。デバッグマクロを作られる方もそのようにされているみたいです。

次にポインタですが、CのポインタはSwiftブリッジ時にUnsafeMutablePointer型といった形になってしまい使いづらい感じです(慣れればいいのかもしれないが)。せっかくブリッジするのならSwiftではサクサクつかえるように工夫したいですね。ポインタなどは伝統的な~~~~Refといった型にtypedefしておくなどするとSwift側ではすっきりした感がでました。よって結構な範囲でC言語側でおぜん立てしてあげたいと思います。どこをC言語で、どこをSwiftで書くのかの棲み分けの基準はポインタの管理デザインによるのかなと思いました。