0

这一行:

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 上。

任何的想法?

4

1 回答 1

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

于 2012-07-23T13:03:15.490 回答