Why does Objective-C use YES/NO macro convention instead of true/false? Why does Objective-C use YES/NO macro convention instead of true/false? objective-c objective-c

Why does Objective-C use YES/NO macro convention instead of true/false?


Objective-C was designed to be (and still is) a strict superset of C. The creators worked very hard to ensure that they did not break compatibility with C in any way. They also tried to make their modifications somewhat obvious so that it would be easy to tell which parts of the code use Objective-C and which parts use plain C. Case in point, the @ used to denote NSStrings rather than just using quotes. This allows plain C strings to coexist with the new ones.

C already had an informal system of TRUE/FALSE macros. I suspect the designers of Objective-C chose the YES/NO macros to avoid conflict and to make it obvious that the code is actually Objective-C. Notice also the usage nil for the 'empty' object rather than just modifying the behavior of good old NULL.


Objective-C is a very verbose language, all methods are very descriptive, and using YES/NO for boolean values instead of true/false makes it more human readable.

You would probably find the following conversation strange, if it happened in real life:A: "Did you see the movie?"B: "True"

If B had answered "yes" (or "no"), it would sound perfectly normal, and code looks more like plain english by using YES/NO instead of true/false.


Apple have always tried to make things easier to use. If you read some system boolean methods and ask yourself what makes more sense to answer a boolean question with, either using YES|NO or TRUE|FALSE, you'll see thank the answer is YES|NO in my opinion.

Otherwise you can always use TRUE|FALSE in your code.