W Objective-c, bezpieczny i dobry sposób na porównanie 2 wartości BOOL?

Chcę porównać 2 wartości BOOL w celu-c.

Odkryłem, że działa (3) - (6) poniższego kodu.
(1) - (2) nie działa, ponieważ BOOL jest po prostusigned char.

(3) działa i jest bardzo czytelny, ale myślębool nie jest obiektywny-c.
Za pomocąbool w kodzie obiektywnym c jest dobre?

Jaki jest bezpieczny i dobry sposób porównania 2 wartości BOOL w celu-c?
Czy są inne lepsze sposoby porównywania?

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));

wyniki:

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

questionAnswers(6)

yourAnswerToTheQuestion