実行時にObjectiveCスクリプトをロードし、現在のiPhoneアプリのクラス/メソッド/オブジェクト/関数に対して実行する方法はありますか?
主な注意:これを実行したい主な理由は、アプリケーションのラピッドプロトタイピングを可能にし、主要なプロトタイピングフェーズが完了した後、作成したスクリプトをビルド時にコンパイルするためです。私は、ObjectiveCインタープリターを含むアプリを出荷する予定はありません。
私が尋ねる理由は、iPhoneアプリに埋め込むことができるluaインタープリターであるiPhoneワックスをいじってみたからです。これは、Objectiveで公開されているオブジェクト/メソッド/機能という意味で非常にうまく機能します。 Cコードは自動的にブリッジされ、luaで利用できます。
これにより、アプリのコアをユーザーのドキュメントディレクトリにあるluaファイルにするだけで、アプリケーションのプロトタイプをすばやく作成できます。アプリをリロードするだけで、XCodeでアプリを再構築しなくても、luaファイルへの変更をテストできます。これは大幅な時間の節約になります。
しかし、Appleの最近の3.1.3 SDKのものでは、このタイプの迅速なプロトタイプ作成を行うための最も安全なアプローチは、解釈されたコードとしてObjective Cを使用できるかどうかだと思いました...そうすれば、最悪のシナリオでは、代わりに、リリース前にアプリにコンパイルするだけです。luaソースをバイトコードにコンパイルし、ビルド時にリンクできると聞きましたが、スクリプト化されたソースがluaではなくObjective cにある場合、最終的に安全なことになると思います。そうすれば、ソースは、関係なく、常にObjectiveCにあります。
これは、iPhoneアプリにObjective Cインタープリターを埋め込む方法の例があるかどうか疑問に思います(私は検索しましたが、何も思いつきませんでした)。これにより、バイナリに組み込まれている現在のクラスに対してアプリのプロトタイプをすばやく作成できます。アプリをデプロイしようとしているときに、アプリ内インタープリターを介してクラスを実行する代わりに、それらをコンパイルします。
iPadとOS4を使用すると、Bluetoothと仮想キーボードをiPhoneとiPadで使用できます。これにより、このタイプのラピッドプロトタイピングは、少なくとも開発期間中は、はるかに便利になります。たとえば、アプリにインタープリターが組み込まれていて、それをiPadにインストールしている場合、XCodeを使用せずに、外出中にインタープリターに対してコーディングできます。そして私にとって、ソースを「アップル承認済み」の状態に戻すための最も便利な方法は、スクリプトがObjectiveCである場合です。