Son bastante diferentes.
El primero obtiene un puntero de objeto del diccionario, luego interpreta el puntero como BOOL
. Esto significa que cualquier puntero que no sea nil
se interpretará como YES
y nil
como NO
. En el ejemplo concreto, como los diccionarios no pueden contener nil
punteros, solo obtendrá YES
de esta línea de código.
El segundo toma el mismo objeto del diccionario, luego envía el mensaje boolValue
a ese objeto. Presumiblemente, y si el objeto reconoce el mensaje, dará como resultado una versión BOOL
del objeto.
Como ejemplo concreto, si el diccionario contiene un NSNumber
asociado con la tecla @"boolValue"
, la NSNumber
recibirá el mensaje boolValue
, y si no es cero retorno YES
, de lo contrario NO
.
Para responder a su pregunta, debe usar el segundo formulario. Lanzar un puntero a BOOL
rara vez tiene sentido.