2009-03-27 11 views

risposta

26
typedef signed char  BOOL; 
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
// even if -funsigned-char is used. 
#define OBJC_BOOL_DEFINED 


#define YES    (BOOL)1 
#define NO    (BOOL)0 

(Per riferimento)

[button setAttr:YES]; 

suona meglio IMHO poi ...

[button setAttr:TRUE]; 
52

Rendendolo più leggibile è un motivo tecnico.

+4

Abbassato perché non risponde alla domanda. Al massimo, questo è un commento. –

1

È solo sintassi, non c'è motivo tecnico. Usano solo YES/NO per il loro BOOL invece di vero/falso come fa C++.

+0

Abbassato perché non risponde alla domanda. –

8

La stessa ragione per la maggior parte delle linguaggi utilizzano true e false ... È possibile utilizzare 1 e 0, se vi piace, uguale a una di queste altre lingue.

Davvero, se ci pensate bene, stiamo parlando di:

#define YES 1 
#define NO 0 

E 'semplicemente bello da leggere.

+0

buona spiegazione – wprl

+1

è ancora possibile utilizzare true/false nell'obiettivo-c – zpesk

+0

@zPesk: esattamente. @SoloBold: Grazie :) – rfunduk

-6

E 'lo stesso come vero/falso ..

non chiedetemi perché hanno reinventato la ruota e cambiato i nomi.

mio pesonal ipotesi è che il progettista del linguaggio pensato che sarebbe stato bello essere diverso ... (Sì, lo so mi metterò downvotes dal ventilatore-ragazzi) ..

+1

Non penso che abbiano reinventato la ruota, ma aggiungono solo chiarezza. E lo fa, proprio quello. – Rev316

+9

Non è tanto che hanno "reinventato" la ruota. Hanno preceduto l'implementazione dei booleani in C.Non avendo nulla da copiare, lo hanno implementato come hanno scelto. –

+0

La ruota della mela: http://www.youtube.com/watch?v=9BnLbv6QYcA –

23

C (su cui obiettivo -C è basato) non ha avuto un tipo booleano fino a C99.

Objective-C è stato creato negli anni '80 e ha definito il proprio tipo booleano.

+10

'Objective-C' è _so 80's chic_. –

19

perché il programmatore significa e non, non e .

Problemi correlati