• 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: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning


  • Subject: Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning
  • From: Graham Cox <email@hidden>
  • Date: Tue, 14 Oct 2008 22:31:29 +1100


On 14 Oct 2008, at 10:11 pm, Chris Suter wrote:

I believe the fact that they are class clusters is irrelevant; it's an
implementation detail. The objects returned still conform to the
interfaces defined by NSString and NSMutableString. They return id,
rather than NSString say, because otherwise you'd get a compiler
warning if you tried to do something like:

NSMutableString *string = [NSMutableString string];

Well, that was my point. Maybe my terminology was incorrect - the point is that returning id allows this convenience with classes that derive from a common base. That isn't the case with the OP's code. He has two entirely separate classes that happen to share the same init method name. They *could* return the class type instead of id, as long as he doesn't plan to subclass them further. Whether that's OK in his case would have to be considered.


but for your own classes, you could define your
init... method to return the specific object type.

You can't override the type for existing methods. For example, initWithString: always returns an id. You can define them as returning something different but the compiler will ignore it.


I'm not talking about existing methods. I'm talking about the unique - initWithContext: methods that the OP defined.

I'm not even saying it's a good idea - I'd always return id from an init method because that's least confusing all round. And, as I said, I don't think it would help anyway - the return type is ignored when determining which of a pair of otherwise identically named methods to compile against. In fact this last point is potentially dangerous as I found out to my cost earlier this year (e.g. see: http://www.cocoabuilder.com/archive/message/cocoa/2008/6/5/209327)

Best solution is just not to make the methods look the same.

That's not always convenient. For example, it's nice to be able to do [NSString initWithString:] and [NSMutableString initWithString:].

Yes. My point was that the OP has the option to do this, because it's his own code. I'm not advocating for one microsecond that anything in Cocoa should be changed. Well, at least not on this one point. ;-)


--Graham
_______________________________________________

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: 
 >[Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: "Oleg Krupnov" <email@hidden>)
 >Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: "Chris Suter" <email@hidden>)
 >Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: "Oleg Krupnov" <email@hidden>)
 >Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: "Chris Suter" <email@hidden>)
 >Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: Graham Cox <email@hidden>)
 >Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning (From: "Chris Suter" <email@hidden>)

  • Prev by Date: Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning
  • Next by Date: Re: intercepting NSBrowser multiple selection extension with shift down/up arrow
  • Previous by thread: Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning
  • Next by thread: Re: [Obj-C Compiler Bug?] Two different classes declaring a message with the same name - compiler warning
  • Index(es):
    • Date
    • Thread