iOSDC Japan 2016 参加メモ: A-10 SwiftでJavaScript始めませんか?
JavaScriptすきですか?
- SwiftからJavaScriptが使える!
- JavascriptCore
熊谷さん
- 横浜の方で勉強会してます
- ネットラジオも始めます
SwiftでJavaScript
- JavaScript
- 手軽に書けるスクリプト言語
JavaScriptCoreとは
- JSのランタイム実行環境
Swiftとの相互運用が可能
使用例
ちょっとまった
基本的な使い方
- JavaScriptCoreをimport
- JSContext生成
- JSコード実行
- evalの結果はcontextに溜まっていく
- 実行結果をSwiftで受け取る
- 返り値をSwiftで受け取れる
変数の扱い
JSValueで表現
- toTypenameメソッドでSwiftの型にできる
- isTypenameプロパティで判定してから取り出せる
オブジェクトもJSValueで
- swift側からforPropertyなどで取り出したりできる
JavaScript API
- JSの基本的な組み込み機能だけが備わっている
DOMなどの高度なものはない
自分の手でAPIを構築していく
- やり方は色々
- JSからでもSwiftからでも
- やり方は色々
変数/関数/オブジェクトをJSで定義する
- 普通にeval
Swiftで定義する
- setObjectすることで、JS上で参照できるようになる
- 参照型だと共有しちゃう
関数をSwiftから取り込む
- クロージャをコンテキストに設定する
- AnyObjectにキャストしてsetObjecすると、JS上から呼び出せる
Swiftの型をJSで使う
Swiftの機能をそのままJS上で使える!
コードを書きやすくする方法
- 普通に書いてると読みづらい
- プロジェクトにJSファイルを組み込んで、Bundleから読み込んでStringにしてevalに流してあげれば楽にできる
まとめ
- JSをSwiftから簡単・自在に扱える
- 審査通るかは、後日!
QA
ECMAScript 2016は対応してる?
- 行けそう
JS側でSwiftのオブジェクトを参照した場合、開放されたオブジェクトの扱いはどうなる?
- JS Managed Valueあたりを見るとわかるかも
React Nativeは使ってたはずなので、審査は通りそう