On Sep 8, 2010, at 1:29 PM, Greg Parker wrote:

> 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



Greg,

That was it :-) I had not imported ANY category headers in my framework - 
"most" had worked anyway in my linking project so I figured it was some 
framework magic behind the scenes recognizing them and making them work. After 
linking them my warning count went way down and I am getting syntax coloring 
now too - bonus!

I wanted to sneak in one last question - is it safe to compare an 
NSDecimalNumber to an NSNumber  and visa versa?

Thanks for taking the time to respond.

-chris_______________________________________________

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

Reply via email to