• 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: Getting a list of all classes, etc...
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting a list of all classes, etc...


  • Subject: Re: Getting a list of all classes, etc...
  • From: Chris Suter <email@hidden>
  • Date: Fri, 28 Mar 2008 08:15:00 +1100


On 28/03/2008, at 3:23 AM, Ken Thomases wrote:

On Mar 26, 2008, at 11:43 PM, Graham Cox wrote:
I have a class that can contain different objects which all derive from a class R. The container can accept instances of any subclass of R.

Each subclass of R implements a CLASS method for a particular feature, returning an array. The container needs to build an array which is the union of all the arrays returned by each subclass. Thus it needs to iterate through a list of all possible subclasses of R, combining the arrays as it goes. Problem is that not all possible subclasses of R are known until runtime, so I need a way to be able to get hold of such a list, based on the fact that they all inherit from R. Note that these are not instances of R, but classes. (I can get a list of instances I have right now, but that doesn't cover the possibility of another object instance derived from R being added after I already built the array).

Hope this makes sense - any ideas?

You seem to have solved this, but there might be a better way:

Implement +initialize on class R. Reading the docs on +initialize, you'll find that it's called for subclasses of R, too, if those subclasses don't override +initialize. Even if a subclass does override +initialize, you can make it a part of the design contract that they must call [super initialize]. (Yes, that goes against a suggestion in the docs, but in this case you're doing it with eyes open for a specific purpose.)

So, now you have arranged that R's +initialize is called for R and every one of its subclasses. In that method, you can use "self" to refer to the actual (sub)class being initialized and do whatever is appropriate from there.

The problem with using initialize is that it's only guaranteed to be sent just before the first message is sent to that class (which might not be at all if the class isn't used).


- Chris

_______________________________________________

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: 
 >Getting a list of all classes, etc... (From: Graham Cox <email@hidden>)
 >Re: Getting a list of all classes, etc... (From: "Sherm Pendley" <email@hidden>)
 >Re: Getting a list of all classes, etc... (From: Graham Cox <email@hidden>)
 >Re: Getting a list of all classes, etc... (From: Graham Cox <email@hidden>)
 >Re: Getting a list of all classes, etc... (From: Ken Thomases <email@hidden>)

  • Prev by Date: Re: Static in Subclasses
  • Next by Date: Re: NSMapTable with pointer keys ?
  • Previous by thread: Re: Getting a list of all classes, etc...
  • Next by thread: Re: Getting a list of all classes, etc...
  • Index(es):
    • Date
    • Thread