Ios 在Cocoa伐木工人日志中包含“self”
在每个登录消息中包含Ios 在Cocoa伐木工人日志中包含“self”,ios,objective-c,cocoalumberjack,Ios,Objective C,Cocoalumberjack,在每个登录消息中包含self的最佳方式是什么 我尝试的是: 实现DDLogFormatter协议-日志消息的调用者在formatLogMessage:方法中不可用 #定义如下内容: #define LogInfo(frmt,…)DDLogInfo([NSString stringWithFormat:@“%@:%@”,self,frmt]),###VA(u ARGS)(请注意[NSString…]周围的额外()-谢谢 当我想弱引用self时,这会产生问题,例如在块内调用LogInfo——包括s
self
的最佳方式是什么
我尝试的是:
- 实现
协议-日志消息的调用者在DDLogFormatter
方法中不可用formatLogMessage:
#定义如下内容:
(请注意#define LogInfo(frmt,…)DDLogInfo([NSString stringWithFormat:@“%@:%@”,self,frmt]),###VA(u ARGS)
[NSString…]周围的额外
-谢谢 当我想弱引用()
时,这会产生问题,例如在块内调用self
——包括LogInfo
可能会导致内存问题self
我还缺少什么?还有其他更好的日志库吗?如果在
[…]
周围放置一个额外的()
,那么第二个日志库应该可以工作。这样可以工作,你能解释一下为什么额外的()
有帮助吗?C预处理器无法识别[]
作为括号,括号内的逗号将其混淆,认为它是三个独立的宏参数。在块中使用该宏时要非常小心——这会创建对self的隐藏强引用,在某些情况下会创建一个retain循环。当我做了类似的事情后,我会创建第二个记录宏,它接受一个对象arGUnit显式,因此,如果需要,您可以传入一个weakSelf。使用自定义宏,如果您想在格式化程序中执行某些特殊操作,您可能可以将对象作为标记传递,并可以通过一个特殊的上下文值来知道它是日志记录对象。