2012-10-11 25 views
7

こんにちは、私は奇妙な質問があります。私は、実行時にファイルからObjective Cクラスを作成したい。例えば、私は目的のCアプリケーションを持っているので、テキストファイル(または何かが動作するもの)にポイントしてから、アプリケーションでテキストファイルを解析して実行時にクラスを作成させたいオブジェクト)。もちろん、私はパーザと、それが可能かどうかを知りたいすべてのものを書いています。私は、これら二つの記事を読む:実行時にテキストファイルからObjective-Cクラスを作成できますか?

http://www.mikeash.com/pyblog/friday-qa-2010-11-6-creating-classes-at-runtime-in-objective-c.html

http://www.mikeash.com/pyblog/friday-qa-2010-11-19-creating-classes-at-runtime-for-fun-and-profit.html

実行時に客観的Cクラスを作成する方法を示していますが、そのはコンパイル時に定義されたC関数を使用して行われています。文字列を使って同じことをする方法を見つけることができれば、完璧な関数を定義できます。なぜなら、コンパイル時に定義する必要がないからです。

+0

ツタンカーメンを使用して独自のプロセスにロードされるので、それを変更することは非常に簡単だろう。あなたはclangとリンカーを再実装したいですか?あなたはどれくらいの仕事があるか知っていますか? – trojanfoe

+0

あなたはソースをコンパイルしてNSBundle – nielsbot

+0

を使ってロードできるダイナミックライブラリ/バンドルを生成することができるはずですが、objective-cファイルでこれを行うのはあまり意味がありません。 clang source)...あなたがカスタム言語を作成することに興味があるなら、それはより意味をなさない... – nielsbot

答えて

1

完全に可能です。

フルバージョンのObjective-Cパーサーとコードジェネレータが含まれているので、Objective-C support in thisから始めることをお勧めします。

2

これは反射プログラミングと呼ばれています。 Obj-Cはスクリプト言語ではないので、Obj-Cのコード評価サポートはないと思うので、Obj-Cのリフレクションの概念は静かに制限されています。また、実行時にコンパイラはすでにコードをObj-C clangコードに変換しています。バイトコードを逆変換して再コンパイルするだけで時間がかかります。

Obj-Cのリフレクションについては参照できますこれらの答え

1

私のgithubプロジェクトのcocoa-interprreterを参照してください。これは、あなたが望むものの一部です。

実行時にテキストファイルをコンパイルし、NSTaskを使用して実行可能ファイルを実行します。バイナリがNSBundle

https://github.com/Daij-Djan/cocoa-interpreter

関連する問題