objective c - Why is BOOL turned to int when negated with explicit block return type -
why BOOL
, which four signed a typedef
Is it changed when converted to int
?
does not // compile NSInteger events = [[contactCountries indexesOfObjectsPassingTest: ^ (id obj, NSUInteger IDX, BOOL * off) {return [isEqualIgnoringCase obj: @ "astring"]; }] Calculation]; Error:
to return type 'int' Back returns type 'BOOL' (aka 'signed four) should the block literally unspecified clear return type
that 'C' objective Due to ! C99 say to about
operator (my emphasis): The
6.5.3.3 Single arithmetic operators, Article 5:
The result logical rejection operator! 0 if the value of its operand compares to 0 with the unequal, 1 if the value of its operand compares to 0 equals. The result type is int. Expression! E is equal to (0 == E.)
You put it:
return (bool) [isEqualIgnoringCase obj: @ "astring"];
Comments
Post a Comment