簡體   English   中英

阻止Xcode截斷NSLogs

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM