我想在我的所有类中定义和设置值x,除了在给定的类中。
因此,我已添加到文件MyApp-Prefix.pch
:
int ddLogLevel = LOG_LEVEL_VERBOSE;
现在,在给定的类中,我想要更改此变量。
我该怎么办 ?我应该把新命令放在哪里?在.m
?在@implementation
之前?有/无const
和/或static
和/或type
??
PS:如你所见,我对extern
/ const
事情一无所知。如果有人知道一个好的和明确的参考,对于一个不懂C的新手,我会接受它!
答案 0 :(得分: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";