格式化字符串输出的整数

时间:2009-04-18 17:04:47

标签: xcode debugging

在断点动作中,我要这样做:

@(const char *)[(NSString*)[myobject retainCount]UTF8String]@

给出了这个输出:

<Error: Cannot access memory at address 0x2>

如果我这样做:

@(NSString*)[myboject retainCount]@

它输出一个内存地址。但如果我在代码中这样做:

NSLog(@"retain count is: %d", [myobject retainCount]);

它给出了这个输出:

2009-04-18 09:58:48.085 myapp[80277:20b] retain count is: 1

在断点操作中正确输出所需的语法是什么?

另外,在哪里可以找到断点操作的格式键的完整列表?

2 个答案:

答案 0 :(得分:5)

您应该能够在“Log”操作上实际使用“Debugger Command”断点操作,将命令文本设置为:

p (int)[myObject retainCount]

如果要记录Objective-C对象的描述:

po myObject

如果需要,您可以使用之前的日志操作显示指示正在打印的内容的消息。

至于你在这种情况下记录的特定保留计数问题,直接检查保留计数并尝试以这种方式解决与内存相关的错误并不是一种很好的做法。有关此问题的详细解释,请参阅this post

答案 1 :(得分:5)

retainCount返回一个数字。简单地将它转换为字符串是不正确的,因为它是一个数字,而不是一个字符串。要将数字打印为字符串,您必须调用:

printf("%d",[myobject retaincount]);

或打印出这个字符串:

[NSString stringWithFormat:@"%d",[myobject retaincount]];