En Objective-c, ¿una forma segura y buena de comparar 2 valores de BOOL?

Quiero comparar 2 valores BOOL en objetivo-c.

Descubrí que (3) - (6) del siguiente código funciona.
(1) - (2) no funciona porque BOOL es justosigned char.

(3) Funciona y es muy legible pero creo.bool no es objetivo-c.
Utilizandobool En código objetivo-c es bueno?

¿Cuál es la forma segura y buena de comparar 2 valores de BOOL en object-c?
¿Hay otras formas mejores de comparar?

BOOL b = YES;
BOOL c = 2;

NSLog(@"(1) %d", b == c); // not work
NSLog(@"(2) %d", (BOOL)b == (BOOL)c); // not work
NSLog(@"(3) %d", (bool)b == (bool)c);
NSLog(@"(4) %d", !b == !c);
NSLog(@"(5) %d", !!b == !!c);
NSLog(@"(6) %d", (b != 0) == (c != 0));

resultados:

(1) 0
(2) 0
(3) 1
(4) 1
(5) 1
(6) 1

Respuestas a la pregunta(6)

Su respuesta a la pregunta