3

MonoTouch プロジェクトで OpenFeint を使用したいと考えています。Mono でサードパーティの Objective-C ライブラリを使用するための適切なバインディングを作成した経験はありません。Xamarin Web サイトでこの記事を読んでも、それ以上は役に立ちませんでした。MonoTouch で OpenFeint を使用するために必要なバインディングを作成した人はいますか、または必要なバインディングを作成した経験のある人はいますか?

4

2 に答える 2

3

とても簡単です。

File->New Project->MonoTouch->MonoTouch Binding プロジェクト

まず、Objective-C ライブラリ (*.a ファイル) を追加します。[ビルド] オプションは自動的にNative Library.

提供されているすべてのヘッダー ファイルを [ビルド] オプションで追加しますNone(これは、バインディングの記述に役立つ参照用です)。

ヘッダー ファイルを読み、ApiDefinitions.cs ファイルにバインディングの記述を開始します。

  • [BaseType(typeof(NSObject))]クラスが他のものから継承しない限り使用する
  • [Export("yourMethod:")]メソッドで使用
  • メソッドの + および - 記号に注意してください。+ は静的メソッド[Static]を示します。最後に使用して、それを示します。
  • デリゲート クラス (継承する必要があるクラス) に遭遇した場合は、 を追加[Model]します。それ以外の場合は、シール クラスとして表示されます。
  • 他のライブラリをリンクしてコンパイルする必要がある場合は、*.a ライブラリの下に表示される designer.cs ファイルの [LinkWith] 属性を変更します。
  • 列挙は他の *.cs ファイルに入ります (名前は忘れました)
  • #define MyConstant 1- これらのような定数は、それらが入っているヘッダー ファイルのクラスに入れる必要があります。クラスを部分として新しい *.cs ファイルを定義します。必要に応じて、クラスに追加の C# コードを配置することもできます
  • NSTypes を適切な C# タイプにマップします: NSString -> string など。
  • Obj-C 型の名前を自由に変更して、愚かにならないようにしてください。すべてのメソッド、メンバーなどでランダムなプレフィックスに出くわしました--そのようなものを削除します。
  • 質問で指定したリンクを読んでください
  • すべてが完了したら、新しいライブラリを参照するだけです (プロジェクト設定で追加のビルド オプションを使用しないでください。これ以上使用する必要はありません)。

一般に、上司のように Obj-C ライブラリを快適にバインドできるように、自分で行うことをお勧めします。これは、私の部署の新入社員に伝えたいことです。

于 2012-03-26T11:55:08.853 に答える
1

@Jonathanの優れた回答に加えて...

Xamarinなどの github で利用できるいくつかのバインド プロジェクトがあり、Objective-C コンストラクトを C# に変換する方法がわからない場合にヒントを得ることができます。実際の例は、理論に沿って非常に役立つことがよくあります。

特定の場所でブロックされた場合は、ここまたはメーリングリストで具体的な質問をすることをためらわないでください。

于 2012-03-26T12:11:16.070 に答える