Objective c 目标-C如果报表输入依据错误

Objective c 目标-C如果报表输入依据错误,objective-c,xcode,Objective C,Xcode,我是一个经验丰富的程序员,所以这种神秘的行为对我来说完全是个谜 我有一个简单的if语句,只有当两个布尔变量正好为false时才应该输入它。但是,由于某种原因,如果其中只有一条语句为false,则会输入if语句 我的代码如下所示: BOOL connected = [self connected]; NSLog(@"Connected to the internet: %@", connected ? @"YES" : @"NO"); BOOL notConnectedMessageShown

我是一个经验丰富的程序员,所以这种神秘的行为对我来说完全是个谜

我有一个简单的if语句,只有当两个布尔变量正好为false时才应该输入它。但是,由于某种原因,如果其中只有一条语句为false,则会输入if语句

我的代码如下所示:

BOOL connected = [self connected];

NSLog(@"Connected to the internet: %@", connected ? @"YES" : @"NO");

BOOL notConnectedMessageShown = ((FOLDAppDelegate *)[[UIApplication sharedApplication] delegate]).notConnectedMessageShown;

NSLog(@"notConnectedMessageShown: %@", notConnectedMessageShown ? @"YES" : @"NO");

if (!connected && !notConnectedMessageShown);
{
    NSLog(@"Entering if statement");
}
NSLOG打印以下内容:

"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"
我真的不明白。因为第一个变量首先是true,所以根据我的编程技巧,应该跳过整个if语句吗


有人知道这里发生了什么吗?

在if的末尾有一个分号

这样,真实条件的块就是空的,代码总是在它之后进入块

应该是这样的:

if (!connected && !notConnectedMessageShown)  <<-- see here
{
   NSLog(@"Entering if statement");
}

天哪!难怪它完全没有看到这一点。非常感谢你!
if (!connected && !notConnectedMessageShown)  <<-- see here
{
   NSLog(@"Entering if statement");
}