La declaración if de Objective-C se ingresó de manera incorrecta
Frecuentes
Visto 100 equipos
2
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 tienes solo se puede ingresar cuando exactamente dos variables booleanas son false
. Sin embargo, las 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 NSLog
imprime lo siguiente:
"Connected to the internet: YES"
"notConnectedMessageShown: NO"
"Entering if statement"
Realmente no entiendo. Como la primera variable es true
en 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í?
1 Respuestas
7
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c xcode or haz tu propia pregunta.
¡Jesucristo! No es de extrañar que no haya visto eso en absoluto. ¡Muchas gracias! - Zappel