In Objective-c qual è la differenza tra @YES
/@NO
e YES
/NO
? Quali tipi sono usati per ciascuno?Qual è la differenza tra @ YES/@ NO e YES/NO?
risposta
@YES
è una forma breve di [NSNumber numberWithBool:YES]
&
@NO
è una forma abbreviata di [NSNumber numberWithBool:NO]
e se scriviamo
if(@NO)
some statement;
quanto sopra if eseguirà dal momento che la dichiarazione di cui sopra sarà
if([NSNumber numberWithBool:NO] != nil)
e non è uguale a nil
quindi sarà true
e così passerà.
Mentre YES
e NO
sono semplicemente BOOL's
e sono definiti AS
#define YES (BOOL)1
#define NO (BOOL)0
YES
& NO
è stessa true
& false
, 1
& 0
rispettivamente ed è possibile utilizzare 1
& 0
invece di YES
& NO
, ma per quanto riguarda readabi l 'interesse è YES
& NO
(dovrebbe) essere decisamente preferito.
La differenza è che utilizzando @
si sta creando un'istanza NSNumber
, quindi un oggetto. Yes
e No
sono semplicemente valori booleani non primitivi.
Il @
è un letterale una sorta di scorciatoia per creare un oggetto lo avete anche nelle stringhe @"something"
, dizionari @{"key": object}
, array: @[object,...]
e numeri: @0,@[email protected]
o espressioni @(3*2)
.
è importante capire che quando si dispone di un oggetto come NSNumber
non si può fare operazioni matematiche di base (in obj-c), come aggiungere o moltiplicare, in primo luogo è necessario tornare al primitivo valore di utilizzando metodi come: - integerValue, -boolValue, -floatValue ecc
è probabilmente visto, perché i tipi di raccolta di fondazione funziona solo con gli oggetti, quindi se avete bisogno di mettere una serie di Caccio all'interno di un NSArray
, devi convertirlo in oggetto.
Questa è una risposta migliore rispetto alla risposta attualmente accettata. – KPM
@ KPM, sì sono d'accordo, è meglio. –
@ SI/NO @ è il tipo di
NSNumber
, viene utilizzato quando fare qualcosa con Fondazione oggetto Spazio esempioNSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong
SI/NO è
BOOLs
'SÌ' e' NO' sono 'BOOL's, non' Boolean's. –
- 1. Qual è la differenza tra "false" e "no" in Prolog
- 2. Qual è la differenza tra no-cache e no-store in Cache-control?
- 3. Qual è la differenza tra = e: =
- 4. Qual è la differenza tra Verilog! e ~?
- 5. Qual è la differenza tra? : e ||
- 6. qual è la differenza tra [[], []] e [[]] * 2
- 7. Qual è la differenza tra $ e $$?
- 8. Qual è la differenza tra ("") e (null)
- 9. Qual è la differenza tra dict() e {}?
- 10. Qual è la differenza tra " " e ""?
- 11. Qual è la differenza tra {0} e ""?
- 12. Qual è la differenza tra `##` e `hashCode`?
- 13. Qual è la differenza tra {0} e +?
- 14. Qual è la differenza tra .ToString() e + ""
- 15. qual è la differenza tra:.! e: r !?
- 16. Qual è la differenza tra {attivo: "sì"} e {"attivo": "sì"}?
- 17. Qual è la differenza tra navigationController.navigationBarHidden e navigationController.navigationBar.hidden?
- 18. Qual è la differenza tra reindirizzamento e inoltro in Symfony?
- 19. Qual è la differenza tra "e" in Prolog?
- 20. Qual è la differenza tra root.destroy() e root.quit()?
- 21. Qual è la differenza tra objc_exception_throw e [NSException raise]?
- 22. Qual è la differenza tra gmake e make?
- 23. Qual è la differenza tra & # x00A0; e ?
- 24. Qual è la differenza tra finto e mock_model in RSpec
- 25. Qual è la differenza tra "same-origin" e "no-cors" per l'API Fetch di JavaScript?
- 26. Qual è la differenza tra no-drop e non consentiti nei CSS?
- 27. Qual è la differenza tra Ctrl-C e SIGINT?
- 28. Qual è la differenza tra dbcontext.Add e dbcontext.AddObject
- 29. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 30. Unix: Qual è la differenza tra la fonte e l'esportazione?
Ho capito il tuo punto, ma ho provato lo stato 'BOOL = @YES;' che ha funzionato senza alcun avvertimento o errore. – Exploring
@Exploring, 'BOOL a = 1.0 ;, BOOL aa = self; BOOL aaa = @ "abc"; 'tutte queste istruzioni funzioneranno anche, senza alcuna lamentela da parte del compilatore –
Lo faranno, perché un incarico a BOOL per definizione della lingua controlla se l'elemento assegnato è diverso da zero o non nullo e assegna SÌ o NO. – gnasher729