2009-03-27 12 views

Respuesta

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 

(Como referencia)

[button setAttr:YES]; 

Suena bonito, entonces en mi humilde opinión ...

[button setAttr:TRUE]; 
52

Haciéndolo más legible es una razón técnica.

+4

Vota abajo porque esto no responde la pregunta. A lo sumo, este es un comentario. –

1

Es solo sintaxis, no hay ninguna razón técnica para ello. Simplemente usan SÍ/NO para su BOOL en lugar de verdadero/falso como lo hace C++.

+0

Vota abajo porque esto no responde la pregunta. –

8

Por la misma razón la mayoría de idiomas utilizan true y false ... Se puede utilizar 1 y 0 si se quiere, igual que cualquiera de los otros idiomas.

Realmente, si se piensa en ello, estamos hablando de:

#define YES 1 
#define NO 0 

Es simplemente más agradable de leer.

+0

buena explicación – wprl

+1

aún se puede usar verdadero/falso en el objetivo-c – zpesk

+0

@zPesk: Exactamente. @SoloBold: Gracias :) – rfunduk

-6

Es lo mismo como verdadero/falso ..

No me preguntes por qué se reinventaron la rueda y se cambian los nombres.

Mi conjetura es pesonal, que el diseñador del lenguaje pensó que estaría bien ser diferente ... (Sí, sé que voy a conseguir downvotes de los fan-boys) ..

+1

No creo que hayan reinventado la rueda, sino que simplemente añaden claridad. Y lo hace, solo eso. – Rev316

+9

No es tanto que "reinventaron" la rueda. Precedieron la implementación de booleanos en C.Al no tener nada que copiar, lo implementaron a su gusto. –

+0

La rueda de Apple: http://www.youtube.com/watch?v=9BnLbv6QYcA –

23

C (en el que el objetivo -C se basa) no tenía un tipo booleano hasta C99.

Objective-C se creó en los años 80 y definió su propio tipo booleano.

+10

'Objective-C' es _so 80 chic_. –

19

Debido a que el programador significa y sin, no y .

Cuestiones relacionadas