Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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).



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...


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.


I've always used YES NO TRUE FALSE interchangeably without any #defines.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: