Objective-C if-statement以错误的方式输入

Zap*_*pel 2 xcode objective-c

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

我有一个简单的if认为语句来应该在整整两个布尔变量只能输入false.但是,if-statement由于某种原因进入时只有其中一个false.

我的代码看起来像这样:

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");
}
Run Code Online (Sandbox Code Playgroud)

NSLog打印以下内容:

"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"
Run Code Online (Sandbox Code Playgroud)

我真的不明白.由于第一个变量true位于第一位,因此if根据我的编程技巧应该跳过整个语句?

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

a_h*_*ame 7

你的结尾有一个分号 if

if (!connected && !notConnectedMessageShown);  <<--- this ; is wrong
Run Code Online (Sandbox Code Playgroud)

这样,"真实"条件的块就是空的,并且您的代码总是在它之后立即进入块.

它应该是这样的:

if (!connected && !notConnectedMessageShown)  <<-- see here
{
   NSLog(@"Entering if statement");
}
Run Code Online (Sandbox Code Playgroud)