2016-08-03 3 views

答えて

0

実装を取得するには、アセンブリをObjective-Cに変換するツールを見つけたり、書き込んだりする必要があります。

ヘッダー(インターフェイス)を生成するだけで、利用可能なツールがあります。 Googleを使用します。

-1

コンパイラを使用するため、Objective-Cランタイムに.hと.mファイルから新しいクラスを作成するように伝えるだけでは意味がありません。プロジェクト内の作成をハードコードする必要があります。

  1. その後、新しいクラスを使用することができます(...とclass_addPropertyと性質)class_addMethodを持つメソッドを追加します

をobjc_allocateClassPair

  • とサブクラスを作成します。

  • 1

    .hの作成は概念的に可能ですが、コードを自分で作成する必要があります(ObjCランタイムコールを使用してクラスを検査し、手作業でファイルを書き込む必要があります)。私はすでにこのコードを書いた人は誰も知らないが、それを書くことはObjCランタイム関数の優れた導入となるだろう。 .hはおそらくそれほど親切ではないことに注意してください。たとえば、メソッドシグニチャーのすべてのオブジェクト型はidになります。だから使い道はありますが、私はたくさんの方法があるとは思っていません。

    ここで.mを作成することは意味がありません。ランタイム生成クラスの実装は、既存の関数(すでにコンパイル済みのコード)へのIMPポインタの束になるでしょう。私はあなたが.mにあると予想されることを知らない。原則では、関数名を動作するように実行可能ファイルをスキャンし、その後のようなものを見.mを書き出すことができます:

    - (void)someMethod { 
        SomeMethod_IMP() 
    } 
    

    これはおそらく、かなり複雑になるだろう、と私はそれだろういくつかのコーナーケースを想像することができます一般的なケースであなたを噛む。

    これは一般的に、動的に生成されるクラスが使用されるのではなく、かなりまれな場合に使用されます。彼らはKVOのどこにでもありますが(あなたは決してそれから.hを望んではいけません)、それらの他の使い方は似ています:彼らは通常、既存のインターフェイスのいくつかの魔法のサブクラスなので、ほとんどの場合、スーパークラスと同じAPIを使用します)。あなたは本当に解決しようとしている問題は何ですか?

    関連する問題