3

iOSプロジェクト(sharekit)でオープンソースコンポーネントを使用しており、ヘッダーファイルで静的変数を定義しています。たとえば、彼らはアプリ名を次SHKConfig.hのように定義しています。

#define SHKMyAppName            @"My App Name"

私がやりたいのは、これを動的にすることです。その特定のファイルにこれらの変数をハードコーディングしたくありません。viewDidLoad(私が知る限り)ヘッダーファイルには明らかにメソッドがないので、どうすればこの変数を動的に割り当てることができますか?

これも可能ですか?

事前にどうもありがとうございました!!!

4

3 に答える 3

4

#defineコードのコンパイル中に常に評価されます。この機能を利用するには、ライブラリを変更する必要があります。

別の解決策は次のとおりです。でクラスProviderを作成する

+ (NSString *)getYourConstant;

メソッドと次のマクロを使用します

#import "Provider.h"

#define kTheConstantYouNeed [Provider getYourConstant]
于 2011-05-22T23:30:25.537 に答える
1

マクロプリプロセッサを使用ifdefして、コンパイル時に変数を再定義できます。そもそも変数ではないので、「その変数を変更」する方法はありません。SHKMyAppNameこれは、のすべての出現箇所を。に置き換えるマクロです@"My App Name

これがあなたにできることです。ビルドしているプロジェクト名を使用してコンパイラー変数を定義します(XCodeプロジェクト構成でこれを行うことができます)。次に、次のように置き換え#defineます。

#if defined(PROJECT_APP_01_BUILD)
#define SHKMyAppName @"My App 01"
#elif defined(PROJECT_APP_02_BUILD)
#define SHKMyAppName @"My App 02"
#elif defined(PROJECT_APP_03_BUILD)
#define SHKMyAppName @"My App 03"
#endif

そうすれば、 App 01をコンパイルするときに、マクロはSHKMyAppName @ "My App02"'SHKMyAppNameに置き換えられます。などなど。@"My App 01"'. When you are compiling **App 02**, macrowill be replaced by

于 2011-05-22T23:28:53.227 に答える
1

これらの定義を単一のappinfo.hファイルに移動して、他のヘッダーに含めることができます。

これは、バージョン情報の良い場所でもあるかもしれません。

例えば

SHKConfig.hの場合:

#include "MyAppInfo.h"
#define SHKMyAppName    MyAppName // define MyAppName elsewhere

そしてMapAppInfo.hで:

#define MyAppName "Bla bla"


または...

SHKConfig.hの場合:

#define SHKMyAppName    MyAppName // define MyAppName elsewhere

そして、アプリのコンパイラ設定に以下を追加します。

-DMyAppName=\"Bla bla\"
于 2011-05-22T23:30:50.267 に答える