Другое различие между bool и BOOL состоит в том, что они не преобразуются точно в один и тот же тип объектов, когда вы выполняете наблюдение значения ключа или когда вы используете такие методы, как - [NSObject valueForKey:].
Как все здесь сказали, BOOL - это символ. Как таковой, он преобразуется в NSNumber с символом. Этот объект неотличим от NSNumber, созданного из обычного символа, такого как «A» или «\ 0». Вы полностью потеряли информацию о том, что у вас изначально была БУЛА.
Однако bool преобразуется в CFBoolean, который ведет себя так же, как NSNumber, но сохраняет логическое происхождение объекта.
Я не думаю, что это аргумент в дебатах BOOL vs. bool, но это может укусить вас однажды.
Вообще говоря, вам следует использовать BOOL, поскольку этот тип используется везде в API-интерфейсах Cocoa / iOS (разработан до C99 и его родного типа bool).