首先,我一直在阅读一些有关CocoaLumberjack的主题,但我无法找到解决此问题的方法:
我正在使用CocoaLumberjack登录我的应用程序。但我也想登录应用程序崩溃。
我已经试过了:
void uncaughtExceptionHandler(NSException *exception) {
DDLogError(@"CRASH: %@", exception);
DDLogError(@"Stack Trace: %@", [exception callStackSymbols]);
// Internal error reporting
// Send log to SOA
}
但是我在appDelegate中遇到了这个错误,在其他地方效果很好:
Use of undeclared identifier '_cmd'; did you mean 'dcmd'
?还有另一种方法吗?
最佳答案
_cmd
是当前选择器或正在调用的Objective-C方法的快捷方式。例如,在实现了以下方法的类中:
@implementation MDAppController
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
NSLog(@"[%@ %@]", NSStringFromClass([self class]),
NSStringFromSelector(_cmd));
}
@end
它会打印出来:
[MDAppController applicationWillFinishLaunching:]
尝试从该
DDLogError()
函数中使用uncaughtExceptionHandler()
时遇到了问题,因为它是C函数,而不是Objective-C方法,因此_cmd
是未定义的。您应该使用
DDLogCError()
而不是DDLogError()
,因为前者旨在用于C函数而不是Objective-C方法。