0

特定のクラスを除いて、すべてのクラスで変数を定義して値 x に設定したいと思います。

したがって、ファイルに追加しましたMyApp-Prefix.pch

int ddLogLevel = LOG_LEVEL_VERBOSE;

さて、特定のクラスで、この変数を変更したいと思います。私は何をすべきか ?新しいコマンドはどこに置くべきですか? で.m@implementation?の前に あり/なしconstおよび/またはstaticおよび/またはtype??


externPS : あなたが見たように、私は/について何も理解していませんconst。C を知らない初心者のために、適切で明確なリファレンスを誰かが知っていれば、私はそれを取ります!

4

1 に答える 1

2

ddLogLevelログシステム cocoalumberjack のログレベルとして認識しています。クラスを「オーバーライド」する代わりに (グローバル変数であるため、そのようなことはありません)、Fine Grained Loggingと呼ばれるものを実行する必要があります。つまり、ビットマスクの次のビットを使用してログを定義し、グローバル定数を、フラグを含むか除外するマスクのビット単位の組み合わせに設定します。リンク先のページで詳しく説明されています。例:

これらの定義を追加

#define LOG_FLAG_FOOD_TIMER    (1 << 4)  // 0...0010000
#define LOG_FOOD_TIMER  (ddLogLevel & LOG_FLAG_FOOD_TIMER)
#define DDLogFoodTimer(frmt, ...)   ASYNC_LOG_OBJC_MAYBE(ddLogLevel, LOG_FLAG_FOOD_TIMER,  0, frmt, ##__VA_ARGS__)

次に、クラスでこのマクロをログ ステートメントとして使用します。

DDLogFoodTimer(@"blah");

グローバルを次のように設定します。

static const int ddLogLevel = LOG_LEVEL_WARN | LOG_FLAG_FOOD_TIMER;

C および Objective-C では、constキーワードは読み取り専用変数を作成します。キーワード const apply は、すぐ左にあるものすべてに適用されます。左側に何もない場合、すぐ右側にあるものに適用されます。例:

// a modifiable pointer to a constant integer (its value can't be modified). 
const int * i;

// Constant pointer to constant integer. 
const int const * i;

externは、変数が別の場所で定義されていることを示します。次のようにグローバル変数を定義するのが一般的なスタイルです。

// header file (outside the class definition)
extern NSString* PREFS_MY_CONSTANT;

// implementation file (outside the class definition)
NSString* PREFS_MY_CONSTANT = @"prefs_my_constant";
于 2013-04-16T16:40:29.277 に答える