On Oct 30, 2008, at 10:12 AM, DKJ wrote:

I'm probably missing something simple, but I don't understand why this line:

        return (i == -1 ? [NSNull null] : [NSNumber numberWithInteger:i]);

(where i is an NSInteger) produces this warning:

        "comparison of distinct Objective-C types lacks a cast"

(The return type of the method is id.)


The ternary conditional operator requires that both sides of the : are the same type. In your case, one is a NSNull* and one is a NSNumber*, and C has no idea that a NSNull* and a NSNumber* are in any way the same kind of pointer, which means that it has no idea what the type of the overall statement is. This would compile:

return (i == -1 ? (id)[NSNull null] : (id)[NSNumber numberWithInteger:i]);

--
Dave Carrigan
[EMAIL PROTECTED]
Seattle, WA, USA

Attachment: PGP.sig
Description: This is a digitally signed message part

_______________________________________________

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 [EMAIL PROTECTED]

Reply via email to