Не совсем.
В C, для целей if
операторов, любое ненулевое выражение оценивается как true.
В Objective-C тип BOOL
является char
. Поэтому в любой ситуации, когда вы приводите целочисленное значение к BOOL
, явно или неявно, сохраняются только младшие 8 битов, и, таким образом, кратные 256 будут интерпретироваться как NO
. Простой способ решить эту проблему - вернуть целое число в BOOL
-значной функции:
- (BOOL)arrayIsNotEmpty:(NSArray *)array
{
// WRONG - will return NO if array contains a multiple of 256 items
return [array count];
// RIGHT
return ([array count] > 0);
}
Тем не менее, использование формы
if ([array count])
// ...
, которые оценивают целые числа как истинные значения без приведения к BOOL
, в порядке.