• 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: NSDecimalNumber: Docs vs. Implementation
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSDecimalNumber: Docs vs. Implementation


  • Subject: Re: NSDecimalNumber: Docs vs. Implementation
  • From: Michael Gersten <email@hidden>
  • Date: Mon, 08 Apr 2002 21:03:15 -0700

I haven't checked with NSNumber,

+[NSString alloc] returns an instance of NSPlaceholderString, a hidden class.
All of the init... routines that actually do anything are located there.

> NSDecimalNumber instances in Cocoa respond to -initWithInt:,
> and return an object of class NSDecimalNumber.

So it looks like this init method is both in the number placeholder, and in the concrete subclass.

In a sense, this makes sense -- every other object (?) can be sent another init method to change the contents, so why not a hidden subclass of NSNumber?

Without seeing how things are actually done, I'd suspect (from this) that NSPlaceHolder<foo> is the subclass under NSFoo, and all the concrete subclasses are under placeholder. That way, all the init methods are shared, and any object can be re-init'd.

> Now
> -initWithInt: is an initializer for the parent class
> NSNumber, which happens to be a class cluster. Therefore
> NSDecimalNumber must be implementing its own version of
> -initWithInt:, since (unlike inheritance from regular
> ("non-cluster") classes), init behaviors for parent cluster
> classes are not inherited "unless explicitly documented."
> (for some background and references, see the section on
> background info at the bottom)
>
> But the documentation for NSDecimalNumber does not
> explicitly state anywhere that it overrides (or, perhaps
> more accurately, "implements") the -initWithInt: method of
> NSNumber.
>
> Do I take it then that:
>
> i) Within Foundation, concrete subclasses of class clusters
> implicitly override all -init... methods, and hence this is
> not explicitly documented
>
> or
>
> ii) I can only rely on those -init.. methods that are
> explicitly documented for NSDecimalNumber; the others are
> not supported
>
> or
>
> iii) The documentation for NSDecimalNumber is incomplete
>
> or
>
> iv) This is already discussed someplace, and I just haven't
> found it.
>
> Thanks!
> - Rajiv.
>
> -----------------------------
> Some background:
>
> Subclasses of class clusters must, in addition to overriding
> primitive methods of the parent class, override any relevant
> -init.. methods as well. The class cluster documentation
> states that "[the subclass] should not rely on any of [the
> -init... methods] that it inherits."
>
> This was also pointed out by Ali Ozer in a post to
> macosx-dev on Oct 31 2000, where he states further that
> "unless otherwise explicitly documented, you usually do not
> inherit the init behaviors from the root class." Indeed, if
> I create a subclass MyNumber of NSNumber and do not override
> -initWithInt: then the following line will raise an
> exception in Cocoa:
>
> MyNumber *m = [[MyNumber alloc] initWithInt:2];
>
> *** Uncaught exception: <NSInvalidArgumentException> ***
> initialization method -initWithInt: cannot be sent to an
> abstract object of class MyNumber: Create a concrete
> instance!
>
> --------------------------------
>
> -----------------------------------------------------
> Protect yourself from spam, use http://sneakemail.com
> _______________________________________________
> cocoa-dev mailing list | email@hidden
> Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
> Do not post admin requests to the list. They will be ignored.

--
I am a Cocoa/WOF/EOF developer, and it looks like I'll be availble for hire. Please contact me at michael-job @ stb.nccom.com if interested.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Prev by Date: Re: NSDecimalNumber: Docs vs. Implementation
  • Next by Date: Looking for an Ordered Dictionary
  • Previous by thread: Re: NSDecimalNumber: Docs vs. Implementation
  • Next by thread: Looking for an Ordered Dictionary
  • Index(es):
    • Date
    • Thread