iPhone nslog“;EXC“不良访问”;

iPhone nslog“;EXC“不良访问”;,iphone,Iphone,我正在尝试使用NSLog打印控制台消息。问题是有时我在调用它时收到“EXC\u BAD\u ACCESS”错误 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { NSLog(@"Working test %d", toInterfaceOrientation); NSLog(@"EXC_BAD_ACCE

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

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

这里我只想看看传入函数的参数包含什么。第一个NSLog工作正常。第二个导致“EXC\u BAD\u ACCESS”,我不明白为什么?

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


正如您在的文档中所看到的,它只是一个示例

EXC\u BAD\u访问通常意味着您试图调用已从内存中释放的对象。尝试在您的环境变量中打开NSZombies,以查看它在何处导致问题

在这里回答一个类似的问题:

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

%@仅适用于对象

UIInterfaceOrientation
是一个枚举:

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

[UIInterfaceOrientation descriptionWithLocale]

显然,这将导致EXC\u BAD\u访问接口方向是枚举变量。。。因此,如果要打印日志,必须使用%d。和%@主要用于对象

使用此代码

NSLog(@“EXC\u错误访问:%d”,toInterfaceOrientation)