0

我想在我的所有类中定义一个变量并将其设置为值 x,但在给定的类中除外。

因此,我已添加到文件中MyApp-Prefix.pch

int ddLogLevel = LOG_LEVEL_VERBOSE;

现在,在给定的类中,我想更改此变量。我应该怎么办 ?我应该把新命令放在哪里?在.m? 之前@implementation?有/没有const和/或static和/或type??


PS:如您所见,我对extern/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 适用于紧靠其左侧的任何内容。如果它的左边没有任何东西,它适用于它右边的任何东西。例子:

// 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 回答