iPhone nslog“EXC_BAD_ACCESS”

iPhone nslog “EXC_BAD_ACCESS”

我正在尝试使用nslog来打印控制台消息。问题是有时我调用它时会收到一个"exc-bad-access"错误

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

这里我只想看看传递给函数的参数包含什么。第一个nslog工作正常。第二个原因是"exc-bad-access",我不明白为什么?.


%@只适用于对象。toInterfaceOrientation不是一个对象。

正如您在EDOCX1[1]的文档中看到的,它只是一个枚举。


第二次nslog崩溃是因为您试图将整数打印为nsObject(%@而不是%d)。uiInterfaceOrientation是一个枚举,它不起作用。


http://developer.apple.com/library/mac/documentation/cocoa/conceptive/strings/articles/formatspecifiers.html

%@仅用于对象。

UIInterfaceOrientation是一个枚举:http://developer.apple.com/library/ios/documentation/uikit/reference/uidevice-class/reference/uidevice.html//apple-refere/doc/c诳ref/uideviceorientationpitalt

当您使用%@时,它基本上是在呼叫:

1
[UIInterfaceOrientation descriptionWithLocale]

显然,这将导致exc-bad-u访问


exc-bad-access通常意味着您试图调用从内存释放的对象。尝试在您的环境变量中打开nszombie,看看它在哪里导致了问题。

在这里回答类似的问题:如何在Xcode中使用nszombie?


ToInterfaceOrientation是一个枚举变量…因此,如果要打印日志,必须使用%d…….and%@主要用于对象…

使用此代码:

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