Em Objective-c, seguro e bom modo de comparar 2 valores BOOL?

Eu quero comparar 2 valores BOOL no objetivo-c.

Eu descobri que (3) - (6) do código a seguir funciona.
(1) - (2) não funciona porque o BOOL é apenassigned char.

(3) funciona e é muito legível, mas eu achobool não é objetivo-c.
Usandobool no código objetivo-c é bom?

Qual é a maneira segura e boa de comparar 2 valores BOOL no objetivo-c?
Existem outras maneiras melhores 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

questionAnswers(6)

yourAnswerToTheQuestion