• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Type comparison warning
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Type comparison warning


  • Subject: Re: Type comparison warning
  • From: Dave Carrigan <email@hidden>
  • Date: Thu, 30 Oct 2008 10:30:35 -0700


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@hidden
Seattle, WA, USA

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

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

References: 
 >Type comparison warning (From: DKJ <email@hidden>)

  • Prev by Date: Re: Customizing controls: Inheritance bad?
  • Next by Date: Re: Porting from Windows to Mac
  • Previous by thread: Type comparison warning
  • Next by thread: Re: Type comparison warning
  • Index(es):
    • Date
    • Thread