Re: Loading a class with a specific superclass from a bundle
Re: Loading a class with a specific superclass from a bundle
- Subject: Re: Loading a class with a specific superclass from a bundle
- From: Jean-Daniel Dupas <email@hidden>
- Date: Tue, 5 Aug 2008 22:51:52 +0200
Le 5 août 08 à 21:59, Chris Hanson a écrit :
On Aug 5, 2008, at 11:19 AM, Elan Feingold wrote:
I can load the principal class of a bundle with:
NSBundle* bundleToLoad = [NSBundle bundleWithPath:@"..."];
Class exampleClass = [bundleToLoad principalClass]);
Actually, this loads the bundle and then gets its principal class.
Loading a bundle will load all of the classes in it, regardless of
whether you're just asking for the principal class
However, I have a situation where I have a bundle that has a class
*without* a principal class, but it has a class that is a subclass
of a specific other class. Is there any way to iterate through
classes offered by a bundle and pick out the ones that derive from
a specific superclass?
As others have explained, a bundle always has a principal class; if
one isn't specified, one of the classes defined within the bundle
will be returned.
What you probably want to do is load the bundle and then look
through the Objective-C runtime for classes whose superclass is one
of those you care about. You can use objc_getClassList to iterate
over the classes known to the runtime, and objc_getSuperclass to
locate the superclass of a class. (There's no objc_getSubclassList.)
What about NSBundleDidLoadNotification?
The notification object is the NSBundle instance that dynamically
loads classes. The userInfodictionary contains the following
information:
@"NSLoadedClasses" An NSArray object containing the names (as
NSString objects) of each class that was loaded
_______________________________________________
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