【问题标题】:Formatting integer for string output为字符串输出格式化整数
【发布时间】:2010-10-20 07:27:35
【问题描述】:

在断点操作中,我会这样做:

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

在断点动作中正确输出需要什么语法?

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

【问题讨论】:

    标签: xcode debugging


    【解决方案1】:

    您应该能够在“日志”操作上实际使用“调试器命令”断点操作,将命令文本设置为:

    p (int)[myObject retainCount]

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

    po myObject

    如果需要,您可以在它之前使用 Log 操作来显示一条消息,指示正在打印的内容。

    至于您在这种情况下记录的特定保留计数问题,直接检查保留计数并尝试以这种方式解决与内存相关的错误并不被认为是一个好习惯。请参阅this post 了解有关此的详细说明。

    【讨论】:

      【解决方案2】:

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

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

      或打印出这个字符串:

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

      【讨论】:

        猜你喜欢
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-15
        • 2011-09-27
        • 1970-01-01
        相关资源
        最近更新 更多