16

为什么这不起作用?

(lldb) po [NSString stringWithFormat:@"%f", 1.0]
error: too many arguments to method call, expected 1, have 2
error: 1 errors parsing expression

但这确实:

(lldb) p (void)printf("%f", 1.0)
1.000000

LLDB 不支持 Objective-C 变量参数语法吗?

4

2 回答 2

22

正如 Martin R 在评论中指出的那样,这显然是变量参数列表的一般 LLDB 问题

另一方面,正如Patrik Schmittat 指出的那样-initWithFormat:工作得很好:

(lldb) po [[NSString alloc] initWithFormat:@"%f", 1.0]
1.000000

我为此提交了一个雷达:rdar://15261415(stringWithFormat 在 LLDB 中不起作用)

于 2013-10-18T11:41:12.927 回答
2
Basically this is the bug in lldb, if you try the same in gdb it works. 
lldb is only passing the low 32 bits of the argument.

请按照此链接使用 stringWithFormat 浮动的奇怪行为

我也在 GDB 中尝试过,它的工作正常,如屏幕截图所示:- 在此处输入图像描述

现在我在 GDB 中尝试了同样的事情:- 在此处输入图像描述

于 2013-10-18T11:15:43.160 回答