我已经看到了一些不同的崩溃报告,它们似乎都是在 Core Text 计算某些文本的大小以响应对[UIView sizeThatFits]
. 我怀疑崩溃有一些共同的原因,但我只有一些堆栈跟踪,而且我不知道如何自己重现任何问题,所以我只能猜测可能引发崩溃的问题类型。
在一种情况下,崩溃发生在一个ABPeoplePickerNavigationController
并且堆栈上的代码完全是 Apple 代码。我已经审核了我的代码,以确保 UIKit/Core Text 仅在主线程中使用。
我在buzztouch论坛上看到了这个诱人的堆栈跟踪,它看起来非常相似,并且还共享“联系人”触发器。
frame #0: 0x007fe283 CoreText`TComponentFont::GetMinSideBearing(CGAffineTransform const&, bool) const + 43
frame #1: 0x0076b244 CoreText`TRun::GetLeftHangersGlyphCountAndWidth(long, unsigned long, TCharStream const&) const + 524
frame #2: 0x0077e7da CoreText`TLine::GetLeftHangersGlyphCountAndWidth(unsigned long const*) const + 234
frame #3: 0x0077e4b9 CoreText`TLine::GetBounds(unsigned long) const + 811
frame #4: 0x0077ace6 CoreText`CTLineGetBoundsWithOptions + 44
frame #5: 0x02059497 UIKit`-[UITableViewIndex _cacheAndMeasureTitles] + 984
frame #6: 0x02059ace UIKit`-[UITableViewIndex sizeThatFits:] + 131
在论坛上,一个名叫 Ofer 的人发帖说崩溃已经修复。我希望 Ofer 能善意地分享一些关于他们发现他们正在做什么来触发崩溃的细节!