Sono nuovo di Objective-C e mi chiedo perché questo metodo viene compilato, qualcuno può spiegarmi perché?Objective-C: ritorno int al metodo BOOL
Grazie
-(BOOL) isEnabled{
return 56;
}
Sono nuovo di Objective-C e mi chiedo perché questo metodo viene compilato, qualcuno può spiegarmi perché?Objective-C: ritorno int al metodo BOOL
Grazie
-(BOOL) isEnabled{
return 56;
}
Un BOOL
in Objective-C è un typedef
di signed char
. Poiché 56
si adatta a questo tipo, la conversione implicita da un valore letterale int
non comporta alcuna perdita di dati.
Zillan, inoltre, nota che questo potrebbe violare il codice se si basa su un valore 'YES' o' NO'. Per esempio. 'if ([self isEnabled] == YES]' fallirebbe mentre 'if ([self isEnabled])' funzionerebbe .. – Joe
Sì, ecco perché il normale stile di codifica evita il confronto con quelle costanti e le usa solo per l'assegnazione. –
Dovresti davvero dare un'occhiata a questo articolo: http://weblog.bignerdranch.com/564-bools-sharp-corners/ –
Si può pensare a una BOOL in Objective-C come
false === 0 === nil //Anything that is zero or nil is false
true = !false //Anything that is NOT zero or nil is true.
56 ritorna quindi vero, perché non è zero
No, non lo è. Un BOOL in Objective-C è un 'char firmato '. –
La mia "definizione" era un po 'fuorviante, l'ho modificata. –
La tua modifica è ancora sbagliata. –
C'è un cast implicito: l'ultima riga è effettivamente: 'return (BOOL) 56;'. –
Sapevo che lo avresti chiesto. – dan