La declaración if de Objective-C se ingresó de manera incorrecta

Soy un programador experimentado, por lo que este comportamiento críptico es un misterio total para mí.

Tengo un simple if-declaración de que debemos solo se puede ingresar cuando exactamente dos variables booleanas son false. Sin embargo, la if-La declaración se ingresa por alguna razón cuando solo uno de ellos es false.

Mi código se ve así:

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");
}

En los NSLogimprime lo siguiente:

"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"

Realmente no entiendo. Como la primera variable es trueen primer lugar, la totalidad if-La declaración debe omitirse de acuerdo con mis habilidades de programación.

¿Alguien tiene una idea de lo que está pasando aquí?

preguntado el 28 de julio de 12 a las 12:07

1 Respuestas

Tiene un punto y coma al final de su if

if (!connected && !notConnectedMessageShown);  <<--- this ; is wrong

De esta manera, el bloque para una condición "verdadera" simplemente está vacío, y su código siempre ingresa al bloque inmediatamente después.

Debería ser esto:

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

Respondido 28 Jul 12, 12:07

¡Jesucristo! No es de extrañar que no haya visto eso en absoluto. ¡Muchas gracias! - Zappel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.