una recomendada parejas pareja mucho ideal entre edad diferencia cual con años objective-c boolean objective-c-literals

objective c - recomendada - ¿Cuál es la diferencia entre @ YES/@ NO y YES/NO?



parejas con diferencia de edad de 20 años (3)

En Objective-c, ¿cuál es la diferencia entre @YES / @NO y YES / NO ? ¿Qué tipos se utilizan para cada uno?


  1. @ SÍ / @ NO es un tipo de NSNumber , se usa cuando se hace algo con el objeto Foundation. Por ejemplo

    NSMutableArray * array = [[NSMutableArray alloc] init]; [array addObject:@YES];//true [array addObject:YES];//Wrong

  2. SÍ / NO es BOOLs


La diferencia es que al usar @ estás creando una instancia de NSNumber , por lo tanto un objeto. Yes y No son simplemente valores booleanos primitivos, no objetos.

El @ es un tipo de acceso directo literal para crear un objeto, también lo tiene en cadenas @"something" , diccionarios @{"key": object} , matrices: @[object,...] y números: @0,@1...@345 o expresiones @(3*2) .

Es importante comprender que cuando tiene un objeto como NSNumber no puede realizar operaciones matemáticas básicas (en obj-c) como sumar o multiplicar, primero debe volver al valor primitivo utilizando métodos como: - integerValue , -BoolValue , -floatValue etc.

Probablemente lo viste porque los tipos de colección de base solo funcionan con objetos, por lo que si necesitas poner una serie de bools dentro de un NSArray , debes convertirlo en objeto.


@YES es una forma corta de [NSNumber numberWithBool:YES]

Y

@NO es una forma corta de [NSNumber numberWithBool:NO]

y si escribimos

if(@NO) some statement;

la instrucción if anterior se ejecutará ya que la instrucción anterior será

if([NSNumber numberWithBool:NO] != nil)

y no es igual a nil por lo que será true y, por lo tanto, pasará.

Mientras que YES y NO son simplemente BOOL''s y se definen como

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

YES y NO es igual que true y false , 1 y 0 respectivamente, y puede usar 1 y 0 lugar de YES y NO , pero en lo que respecta a la legibilidad, YES y NO definitivamente se preferirán.