今天测试的时候,出现下面的crash信息:
Thread 0 Crashed:
0 WebCore 0x39c4e3e8 WebCore::FontFallbackList::invalidate(WTF::PassRefPtr<WebCore::FontSelector>) + 156
1 WebCore 0x39c4e226 WebCore::Font::Font(WebCore::FontPlatformData const&, WTF::PassRefPtr<WebCore::FontSelector>) + 86
2 WebCore 0x39c4e1c6 WebCore::Font::Font(WebCore::FontPlatformData const&, WTF::PassRefPtr<WebCore::FontSelector>) + 6
3 WebKit 0x32f54682 _ZL15rendererForFontP8__GSFont + 242
4 WebKit 0x32f5629a -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:drawUnderline:] + 194
5 WebKit 0x32f561c4 -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:renderedStringOut:] + 116
6 WebKit 0x32f5613c -[NSString(WebStringDrawing) __web_drawInRect:withFont:ellipsis:alignment:letterSpacing:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 108
7 WebKit 0x32f560bc -[NSString(WebStringDrawing) _web_drawInRect:withFont:ellipsis:alignment:lineSpacing:includeEmoji:truncationRect:measureOnly:] + 104
8 WebKit 0x32f56040 -[NSString(WebStringDrawing) _web_sizeInRect:withFont:ellipsis:lineSpacing:] + 80
9 UIKit 0x38dee83c -[NSString(UIStringDrawing)
sizeWithFont:constrainedToSize:lineBreakMode:lineSpacing:] + 128
10 UIKit 0x38de2d0c -[UILabel _legacy_drawTextInRect:baselineCalculationOnly:] + 1164
11 UIKit 0x38da6c6a -[UILabel _drawTextInRect:baselineCalculationOnly:] + 162
12 UIKit 0x38da5a26 -[UILabel drawTextInRect:] + 446
13 UIKit 0x38da5860 -[UILabel drawRect:] + 68
14 UIKit 0x38da4d2c -[UIView(CALayerDelegate) drawLayer:inContext:] + 360
15 QuartzCore 0x338f82e8 -[CALayer drawInContext:] + 108
16 QuartzCore 0x338f6e02 CA::Layer::display_() + 450
17 QuartzCore 0x338ee08a CA::Layer::display_if_needed(CA::Transaction*) + 198
18 QuartzCore 0x338edfb4 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 20
19 QuartzCore 0x338ed996 CA::Context::commit_transaction(CA::Transaction*) + 234
20 QuartzCore 0x338ed7a8 CA::Transaction::commit() + 312
21 QuartzCore 0x338ed60c CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*) + 56
22 CoreFoundation 0x37fc393e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 18
23 CoreFoundation 0x37fc1c34 __CFRunLoopDoObservers + 272
24 CoreFoundation 0x37fc1f8e __CFRunLoopRun + 742
25 CoreFoundation 0x37f35238 CFRunLoopRunSpecific + 352
26 CoreFoundation 0x37f350c4 CFRunLoopRunInMode + 100
27 GraphicsServices 0x3227f336 GSEventRunModal + 70
28 UIKit 0x38def28c UIApplicationMain + 1116
29 MapSDKyj 0x0004d6a6 main (main.m:16)
30 libdyld.dylib 0x38834b1c start + 0
各种google发现大致说法是:(UIStringDrawing)这个是线程不安全的,建议将相应绘制内容移植到主线程中