[英]Stop Xcode from truncating NSLogs
每当我在短时间内多次NSLog
时, Xcode
随机截断其中的一些内容,例如:
2015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-28 22:00:00 +0000, day: 29, week: 2015-53
2015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-29 22:00:00 +0002015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-30 22:00:00 +0000, day: 31, week: 2015-53
2015-11-25 15:53:47.208 AppName[97163:38002062] date: 2015-12-31 22:00:00 +0000, day: 1, week: 2015-53
什么时候应该看起来像这样:
2015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-28 22:00:00 +0000, day: 29, week: 2015-53
2015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-29 22:00:00 +0000, day: 30, week: 2015-53
2015-11-25 15:53:47.207 AppName[97163:38002062] date: 2015-12-30 22:00:00 +0000, day: 31, week: 2015-53
2015-11-25 15:53:47.208 AppName[97163:38002062] date: 2015-12-31 22:00:00 +0000, day: 1, week: 2015-53
在其他时候,日志的顺序也错误。
为什么会发生这种情况,我该如何制止呢?
代码段(需要DateTools ):
for (NSInteger year = 2015; year <= 2016; year++) {
for (NSInteger month = (year == 2015 ? 11 : 1); month <= (year == 2015 ? 12 : 2); month++) {
for (NSInteger day = 1; day <= (month == 11 ? 30 : 31); day++) {
NSDate *date = [NSDate dateWithYear:year month:month day:day];
NSLog(@"INFO: date: %@, day: %d, week: %d-%d", date, (int)day, (int)[date yearForWeekOfYearWithCalendar:calendar], (int)[date weekOfYearWithCalendar:calendar]);
}
}
}
有时它们的顺序错误是一个线索-好像您在线程上调用NSLog
一样,不仅线程以您不期望的顺序执行,而且显然它们有时可以互相脚。 您可以NSLog
调用包装在对dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(...) })
的调用内dispatch_sync(dispatch_get_main_queue(), ^{ NSLog(...) })
以防止它们相互踩踏。 但是,如果希望它们按特定顺序执行,则调用者必须同步执行,而不是异步执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.