Hacker News new | ask | show | jobs
by adamjernst 4827 days ago
Nice idea, but the sample code they show in the screenshot uses "FALSE" instead of NO (the Obj-C standard boolean literal).

I'm not sure how they did that (#define?) but stay far, far away. Imagine if you opened up a Ruby codebase and found out I had aliased NO to be the same as the language builtin false... yeesh.

Also, setting boolean instance variables to NO in init is silly since Obj-C objects are calloc'd, so all ivars are guaranteed to start with default values (nil/0/NO).

4 comments

TRUE and FALSE are defined in obj-c (http://www.opensource.apple.com/source/objc4/objc4-371.1/run...), mainly for compatibility with C code. It's recommended YES and NO are used (http://www.opensource.apple.com/source/objc4/objc4-371.1/run...)
> I'm not sure how they did that (#define?) but stay far, far away

...NO and YES in Objective-C are themselves #defines. As others have pointed out, TRUE/FALSE are also already defined in the language, although using them in Objective-C is not good style.

http://www.opensource.apple.com/source/objc4/objc4-371.1/run...

I've always used YES NO TRUE FALSE interchangeably without any #defines.
CFBase.h defines TRUE as 1 and FALSE as 0. There's no reason to think that they defined it themselves (and indeed, I believe this would error unless they explicitly checked for a previous definition).
Correct.