有关YES和true以及NO和false之间差异的错误

时间:2014-01-29 05:12:40

标签: ios iphone objective-c parse-platform

我有这段代码:

- (BOOL)logInViewController:(PFLogInViewController *)logInController shouldBeginLogInWithUsername:    
(NSString *)username password:(NSString *)password
{
    NSLog(@"anything");
    return false;
}

如果我运行它然后我在一些汇编代码中得到这个错误:“线程1:EXC_BAD_ACCESS(代码= 2,地址= 0x1a)。如果我将代码更改为:

- (BOOL)logInViewController:(PFLogInViewController *)logInController shouldBeginLogInWithUsername:    
(NSString *)username password:(NSString *)password
{
    NSLog(@"anything");
    return NO;
}

我没有得到那个bug。但是,在这两种情况下都没有打印到终端。这对我没有意义,因为如果该代码导致错误,那么计算机不应该读取该区域,因此应该调用NSLog?如此迷茫。所以我想我的问题是为什么没有任何东西印在终端上,为什么改为NO会让bug消失?我不认为他们的差异会导致这个错误吗?为什么呢?

编辑:真的很抱歉你们。上面的代码与我的错误无关。道歉。

2 个答案:

答案 0 :(得分:0)

关于这个问题的第一件事:

difference between YES and true and NO and false

TRUE宏仅作为与C语言代码的向后兼容性提供,因为Objective-C被设计为严格的C超集。所以TRUE和{ {1}}两者都相同。

Possible Duplicate Question

答案 1 :(得分:0)

我不知道究竟是什么问题但主要不同但objective-c

中有两种类型的布尔
  

1)BOOL
  2)布尔

因此BOOL可以包含 YES NO 以外的值。 并且bool可以包含 TRUE FALSE 以外的值。

对于大多数人来说,这是一个不必要的问题,但如果你真的想要一个布尔值,最好使用一个bool。我应该补充一点:iOS SDK通常在其接口定义上使用BOOL,因此这是一个坚持BOOL的参数。

//These will all print "1"
NSLog(@"%d", true == true);
NSLog(@"%d", TRUE == true);
NSLog(@"%d", YES == true);
NSLog(@"%d", true == TRUE);
NSLog(@"%d", TRUE == TRUE);
NSLog(@"%d", YES == TRUE);
NSLog(@"%d", true == YES);
NSLog(@"%d", TRUE == YES);
NSLog(@"%d", YES == YES);

NSLog(@"%d", false == false);
NSLog(@"%d", FALSE == false);
NSLog(@"%d", NO == false);
NSLog(@"%d", false == FALSE);
NSLog(@"%d", FALSE == FALSE);
NSLog(@"%d", NO == FALSE);
NSLog(@"%d", false == NO);
NSLog(@"%d", FALSE == NO);
NSLog(@"%d", NO == NO);


//These will all print "0"
NSLog(@"%d", false == true);
NSLog(@"%d", FALSE == true);
NSLog(@"%d", NO == true);
NSLog(@"%d", false == TRUE);
NSLog(@"%d", FALSE == TRUE);
NSLog(@"%d", NO == TRUE);
NSLog(@"%d", false == YES);
NSLog(@"%d", FALSE == YES);
NSLog(@"%d", NO == YES);

NSLog(@"%d", true == false);
NSLog(@"%d", TRUE == false);
NSLog(@"%d", YES == false);
NSLog(@"%d", true == FALSE);
NSLog(@"%d", TRUE == FALSE);
NSLog(@"%d", YES == FALSE);
NSLog(@"%d", true == NO);
NSLog(@"%d", TRUE == NO);
NSLog(@"%d", YES == NO);

来自Is there a difference between YES/NO,TRUE/FALSE and true/false in objective-c?