On Sep 8, 2010, at 12:40 PM, Chris Tracewell wrote: > On Sep 8, 2010, at 12:02 PM, cocoa-dev-requ...@lists.apple.com wrote: >> It's not YES that's being "returned as" -256, but NO. (The answer is NO in >> all 3 cases.) -256 is 0xFFFFFF00, so you can see that NO (i.e. (signed char) >> 0) is being correctly returned in the low order byte, with trash in the high >> order bytes that's left over from earlier code. >> >> So, the problem is not your 'isLessThanZero' method, but the calling code, >> which is treating the returned value as an int (or something). Presumably >> the calling code was compiled with an incompatible declaration of your >> method, or of the BOOL type. > > Thanks Quincey, your suggestion got me looking at the calling model and I got > it working by first assigning the result as a BOOL rather than just using the > result inside of an if logic statement like so... > > > // ========== Did NOT Work =========// > > if ([theDecimalNumber isLessThanZero]) > { > ... do something > } > > // ========== DID Work =========// > > BOOL theResult = [theDecimalNumber isLessThanZero]; > if (theResult) > { > ... do something > } > > I must admit that I do not understand why this is so. I can for example use > if ([someButton isEnabled]) and it returns a BOOL and the if statement works > fine. If you have any pointers or docs that explains this further I would > really appreciate it as right now I feel scared about how I have been > evaluating BOOL's returned in all of my own custom methods.
I bet you have a compiler warning at this call site that says "warning: 'NSDecimalNumber' may not respond to '-isLessThanZero'". That means the compiler can't see the method declaration for -isLessThanZero at the call site. In that case, the compiler guesses that the method returns `int`, which is wrong and will cause incorrect handling of the BOOL value on some architectures. You need to (1) put your category's @interface in a header file, and (2) import that header file here. -- Greg Parker gpar...@apple.com Runtime Wrangler _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com