我在我的项目中使用 CocoaLumberjack 日志框架,我注意到的奇怪的事情之一是它不记录我的代码中后台线程上的语句。据我检查,它与 ddLogLevel
有关。
我在AppDelegate.h
中定义它:
extern const int ddLogLevel;
然后在AppDelegate.m
中:
const int ddLogLevel = LOG_LEVEL_VERBOSE;
如果我在主线程上记录一些内容,它就会起作用。但是,在后台线程上,如下所示,只有当我在内部声明 int
时它才有效,但我不想这样做。
- (void)fetchNumberofTotalItems {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
int ddLogLevel = LOG_LEVEL_VERBOSE;
...
DDLogVerbose(@"%@: Fetching total number of items!", [self class]);
});
}
如果我删除 int ddLogLevel = LOG_LEVEL_VERBOSE;
行,它将不会记录该行。
有人知道如何让它尊重我在AppDelegate
中的变量吗?
最佳答案
我已经解决了我的问题,而且非常简单。
在AppDelegate.h
中,将extern const int ddLogLevel;
替换为:
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
并删除 AppDelegate.m
中的 const int ddLogLevel = LOG_LEVEL_VERBOSE;
。
之后,#import AppDelegate.h
需要使用日志记录,或者使用 .pch
文件,以便将其导入到每个文件中。
关于objective-c - CocoaLumberjack 未登录 iOS 中的后台线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17887375/