这一行:
NSLog(@"%@", NSStringFromCGSize([@"Test" sizeWithFont:((id)[UIFont systemFontOfSize:12.0f])]));
打印出正确的结果:{24, 15}
。
但是,当我在调试器中执行相同操作时(GDB或LLDB无关紧要),我得到了完全不同的结果:
(gdb) p (CGSize) [@"Test" sizeWithFont:((UIFont*)[UIFont systemFontOfSize:12.0f])]
$1 = {
width = 0,
height = 0
}
在模拟器和设备以及5.1最终SDK和6.0 beta 3 SDK上都会发生这种情况。
有什么想法吗?
答案 0 :(得分:0)
好的,深入挖掘,我发现UIFont对象的动态分配在调试器中失败了:
(gdb) p (CGFloat) [[UIFont systemFontOfSize:12.0f] pointSize]
$3 = 0
(gdb) po [UIFont systemFontOfSize:12.0f]
<UICFFont: 0x8e4b720> font-family: ".Helvetica NeueUI"; font-weight: normal; font-style: normal; font-size: 0px
因此,出于某种原因,在调试器环境中创建的字体对象的字体大小为0.其他属性看起来很好。
我已将此记录为错误:rdar://11934937