【问题标题】:iPhone nslog "EXC_BAD_ACCESS"iPhone nslog“EXC_BAD_ACCESS”
【发布时间】:2011-07-05 04:52:56
【问题描述】:

我正在尝试使用 NSLog 来打印控制台消息。问题是有时我在调用它时收到“EXC_BAD_ACCESS”错误

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"Working test %d", toInterfaceOrientation);
NSLog(@"EXC_BAD_ACCESS %@", toInterfaceOrientation);
}

在这里我只是想看看传递给函数的参数包含什么。第一个 NSLog 工作正常。第二个导致“EXC_BAD_ACCESS”,我不明白为什么?

【问题讨论】:

    标签: iphone


    【解决方案1】:

    %@ 仅适用于对象。并且 toInterfaceOrientation 不是一个对象。

    正如您在UIInterfaceOrientation 的文档中所见,它只是一个enum

    【讨论】:

      【解决方案2】:

      toInterfaceOrientation 是一个枚举变量......所以如果你想打印它的日志,你必须使用 %d ......。和 %@ 主要用于对象...

      使用此代码

      NSLog(@"EXC_BAD_ACCESS :%d",toInterfaceOrientation);

      【讨论】:

        【解决方案3】:

        http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

        %@ 仅用于对象。

        UIInterfaceOrientation 是一个枚举: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html#//apple_ref/doc/c_ref/UIDeviceOrientationPortrait

        当你使用 %@ 时,它基本上是在调用:

        [UIInterfaceOrientation descriptionWithLocale]
        

        显然这会导致 EXC_BAD_ACCESS

        【讨论】:

          【解决方案4】:

          第二次 NSLog 崩溃,因为您尝试将整数打印为 NSObject(%@ 而不是 %d)。 UIInterfaceOrientation 是一个它不起作用的枚举。

          【讨论】:

            【解决方案5】:

            EXC_BAD_ACCESS 通常意味着您正在尝试调用已从内存中释放的对象。尝试在您的环境变量中打开 NSZombies 以查看导致问题的原因

            在此处回答类似问题: How to use NSzombie in xcode?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-03-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多