2009-04-18 116 views
1

在断点动作,我会这样:格式化整数字符串输出

@(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 

的语法需要正确输出的断点动作是什么?

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

回答

5

你应该能够实际使用“调试器命令”断点行动在“日志”行动,命令文本设置为:

p (int)[myObject retainCount]

如果你想记录一个目标的描述-C对象:

po myObject

您可以使用Log动作它显示一条消息,指出如果你想在打印之前什么。

至于你记录在这种情况下的具体保留计数问题,直接检查保留计数并试图解决内存相关的错误,这种方式不被认为是一种好的做法。关于这一点,请参阅this post

5

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

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

或打印出这个字符串:

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