В Objective-C, безопасный и хороший способ сравнить 2 значения BOOL?

Я хочу сравнить 2 значения BOOL в target-c.

Я обнаружил, что (3) - (6) из следующего кода работает.
(1) - (2) не работает, потому что BOOL простоsigned char.

(3) работает и очень читабелен, но я думаю,bool не является целью-c.
С помощьюbool в коде цель-с это хорошо?

Какой безопасный и хороший способ сравнить 2 значения BOOL в target-c?
Есть ли другие лучшие способы сравнения?

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

Результаты:

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

Ответы на вопрос(6)

Ваш ответ на вопрос