2

我在我的项目中使用了 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

4

1 回答 1

2

我已经解决了我的问题,而且非常简单。

AppDelegate.h中,替换extern const int ddLogLevel;为:

static const int ddLogLevel = LOG_LEVEL_VERBOSE;

并删除const int ddLogLevel = LOG_LEVEL_VERBOSE;in AppDelegate.m

之后,#import AppDelegate.h您需要在哪里使用日志记录,或使用该.pch文件以便将其导入每个文件中。

于 2013-07-26T19:05:59.960 回答