打印BOOL类型时出现NSLog问题

raf*_*ian -2 xcode objective-c nslog

(XCode 4.3)为什么在使用EXC_BAD_ACCESS的NSLog语句中发生以下崩溃?

BOOL autoFlag
@property BOOL autoFlag
@synthesize autoFlag

[object setAutoFlag:YES]

NSLog(@"%@", [object autoFlag]);  //crashes here in debugger with EXC_BAD_ACCESS
Run Code Online (Sandbox Code Playgroud)

我设法绕过它NSLog(@"%d"...,打印1,但为什么不起作用@"%@"?我以为它只是将值转换为字符串?

Poc*_*chi 6

%@用于打印作为NSObject类后代的对象的描述,但是这可以被覆盖以使对象打印出您想要的任何内容.

除非autoFlag是一个对象,否则会导致程序崩溃.在NSLog语句中获取这些类型的错误是很常见的,因为编译器无法告诉你想要打印什么样的"东西",而且大部分时间它都不能事先知道(有一些例外,它会在哪里告诉你,你使用了错误的标识符).

如果您想看到的是"真"或"是",那么您需要类似的东西

NSLog(@"Auto Flag: %@",object.autoFlag? @"True":@"False");
Run Code Online (Sandbox Code Playgroud)