Di seguito è riportato un blocco di codice, che deve verificare se un dizionario è nullo e, in caso contrario, estrarre l'oggetto corretto. Tuttavia, per qualche motivo, nonostante il fatto che il controllo if
non riesca, il codice viene comunque eseguito. C'è qualche stranezza nel modo in cui funziona lo NSNull
che non capisco, o si tratta di un bug di Apple?Test di uguaglianza a NSNull
if (svcUser && !(svcUser == (id)[NSNull null])) {
return [svcUser objectForKey:@"access_level"];
}
risposta Console:
(lldb) print svcUser && !(svcUser == (id)[NSNull null])
(bool) $0 = false
(lldb) continue
-[NSNull objectForKey:]: unrecognized selector sent to instance 0x2b51678
Prova rottura su eccezioni, e assicurarsi che il "selettore di non riconosciuta" viene gettata in cui si pensa che è http://developer.apple.com/library/mac/recipes/xcode_help- breakpoint_navigator/articles/adding_an_exception_breakpoint.html –
Hai mai capito cosa stava succedendo qui? –
La spiegazione definitiva ---> http://nshipster.com/nil/ –