我面臨着「UILabel」中的一次奇怪的崩潰。該崩潰從UMLabel或CCLabelTTF的drawRect啓動)。 (我已經花了很多時間搜索這個問題。)什麼可能導致下列代碼崩潰?請幫助調試UILabel上的崩潰(evict_glyph_entry_from_cache)
我使用SDK的XCode 4.0和/或4.1,cocos2d的版本0.99.4,0.99.5
CODE:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(200,100,185,110)];
[label setTextAlignment:UITextAlignmentLeft];
[label setFont:[UIFont fontWithName:@"Marker Felt" size:14]];
[label setLineBreakMode:UILineBreakModeWordWrap];
[label setAdjustsFontSizeToFitWidth:YES];
[label setNumberOfLines:50];
label.text = message;
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor colorWithRed:0 green:81.0/255 blue:100.0/255 alpha:1]];
[self addSubview:label];
[label release]; label = nil;
CRASH:
Assertion failed: (cache->size >= g->size), function evict_glyph_entry_from_cache, file Fonts/CGFontCache.c, line 836.
Program received signal: 「SIGABRT」.
#0 0x316b698c in __kill()
#1 0x316b6982 in kill()
#2 0x316b6974 in raise()
#3 0x316cb620 in abort()
#4 0x316b8f16 in __assert_rtn()
#5 0x30f10d9e in evict_glyph_entry_from_cache()
#6 0x30ed54e8 in expire_glyphs_nl()
#7 0x30ed5494 in CGFontCacheUnlock()
#8 0x30ed5008 in CGGlyphLockUnlock()
#9 0x31e3a5e4 in ripc_RenderGlyphs()
#10 0x31e42a66 in ripc_DrawGlyphs()
#11 0x30ed0714 in CGContextDelegateDrawGlyphs()
#12 0x30ed06c8 in draw_glyphs()
#13 0x30ed025a in CGContextShowGlyphsWithAdvances()
#14 0x311381f0 in WebCore::Font::drawGlyphs()
#15 0x31137e42 in WebCore::Font::drawGlyphBuffer()
#16 0x31137c76 in WebCore::Font::drawSimpleText()
#17 0x31137ad2 in WebCore::Font::drawText()
#18 0x31137a5e in drawAtPoint()
#19 0x3117fdd4 in -[NSString(WebStringDrawing) _web_drawInRect:withFont:ellipsis:alignment:lineSpacing:includeEmoji:measureOnly:]()
#20 0x31180c50 in -[NSString(WebStringDrawing) _web_drawInRect:withFont:ellipsis:alignment:lineSpacing:includeEmoji:]()
#21 0x325ca46c in -[NSString(UIStringDrawing) drawInRect:withFont:lineBreakMode:alignment:lineSpacing:includeEmoji:]()
#22 0x325ca40a in -[NSString(UIStringDrawing) drawInRect:withFont:lineBreakMode:alignment:lineSpacing:]()
#23 0x325cb414 in -[UILabel _drawTextInRect:baselineCalculationOnly:]()
#24 0x325cadf2 in -[UILabel drawTextInRect:]()
#25 0x325cadaa in -[UILabel drawRect:]()
#26 0x325c98e8 in -[UIView(CALayerDelegate) drawLayer:inContext:]()
#27 0x30c6b308 in -[CALayer drawInContext:]()
#28 0x30c6b190 in backing_callback()
#29 0x30c6acb6 in CABackingStoreUpdate()
#30 0x30c6a47e in -[CALayer _display]()
#31 0x30c6a1ce in -[CALayer display]()
#32 0x30c6a14a in CALayerDisplayIfNeeded()
#33 0x30c6994a in CA::Context::commit_transaction()
#34 0x30c696a8 in CA::Transaction::commit()
#35 0x30c6f030 in CA::Transaction::observer_callback()
#36 0x33519b56 in __CFRunLoopDoObservers()
#37 0x33560a38 in CFRunLoopRunSpecific()
#38 0x3356035c in CFRunLoopRunInMode()
#39 0x30248b32 in GSEventRunModal()
#40 0x30248bde in GSEventRun()
#41 0x3259776e in -[UIApplication _run]()
#42 0x32596472 in UIApplicationMain()
#43 0x0000288e in main (argc=1, argv=0x2ffff618) at /Users/ahsan/Public/Drop Box/today1/main.m:13
謝謝您的回覆先生,但字體沒有問題。它大部分時間工作正常,但有時會隨機崩潰...我也嘗試過系統字體,但問題仍然存在......實際崩潰發生在UIStringDrawing類的蘋果中。 UILabel(UIKit)和CClabel(CCLabel)最終都使用UIStringDrawing。 – user533917 2010-12-08 05:46:22
@ user533917你能否請添加一些更多的上下文? (更多地描述你的cocos2d,也許還有更多的代碼示例。) – Moshe 2010-12-08 06:46:43