1

バインドしようとしているコードは、.h ファイルの 1 つに非常に重要なキーを配置します。

#define xAppKey @"REPLACE_WITH_YOUR_APP_KEY"

この値は、ObjC コード全体で再利用されます。私は、バインディング プロセスで、この値が引き継がれないのではないかと疑っています。SOに関する他のいくつかのスレッドに基づいて、少なくともそうであるようです。私の問題は別のものである可能性がありますか、それともラップされたコードでこの値が尊重されていない可能性はありますか?

Objective-C の用語が間違っていたらすみません。それについては何も知りません。

編集

明らかにされていない可能性があることを明確にしたかっただけです。「バインド」とは、ネイティブ ライブラリとして monotouch にバインドすることを指しています。それがすでに明らかである場合は、続けてください...

4

2 に答える 2

4

xAppKey はマクロです。まったく束縛されません。それどころか。プリコンパイル時に@"REPLACE_WITH_YOUR_APP_KEY"、この文字列が常に繰り返されているかのように置き換えられ、コンパイルされます。

まさにこの理由で、一部の専門家はそれらを定数文字列に置き換えることを提案しています。これらの専門家は正しいかもしれません。しかし、私は #define が好きです。

まさにこの理由から、#define ステートメントにコメントを追加しないでください。

#define xAppKey @"REPLACE_WITH_YOUR_APP_KEY" // This is the application key

そのようなことは、ほぼ確実に、理解しにくいコンパイル時エラーを引き起こします。例:

NSLog (@"%@", xAppKey); 

次のように変換されるため、コメントがなくても問題なく動作します。

NSLog (@"%@", @"REPLACE_WITH_YOUR_APP_KEY"); 

ただし、コメントを使用すると、次のように変換されます。

NSLog (@"%@", @"REPLACE_WITH_YOUR_APP_KEY" // This is the application key);

そして、それはコンパイルされません。

于 2013-03-11T23:54:27.170 に答える
2

#defineObj-Cにaを含めることのポイントは.h、ライブラリを活用するアプリケーションに置き換えることができるようにすることです。この場合、(Obj-C)ライブラリはおそらくソースとしてのみ配布されます。

ただし、そのための(Xamarin.iOS)バインディングを作成する必要があります。したがって、このライブラリをコンパイルする必要があります。コンパイルすると、一度限りの値が修正さxApiKeyれます。

あなたの目的は、おそらくこれxApiKeyをXamarin.iOSを介して消費するアプリケーションに公開することです。定数の代わりにプロパティを使用するようにライブラリを変更してからObj-C、(静的)プロパティアクセサーをバインドする必要があります。Xamarin.iOS

于 2013-03-12T09:05:20.413 に答える