Hi everyone, I'm working on a simple plugin-based Foundation tool, and I have a question regarding NSBundles.
I have a function in my tool that discovers all classes that conform to my
plugin protocol. It does this by iterating through the list of loaded classes
and testing each class to see if it conforms to my plugin protocol. If it
does, it adds that class to an array for later use.
This function also looks inside a plugins directory for plugins that might be
created later to add extra functionality. It creates an NSBundle object for
each item in the plugins directory, and then tries to retrieve the
principalClass from the bundle to test for protocol conformance. If the class
is compliant, it gets added to the list. If it doesn't, the bundle gets
explicitly unloaded. However, after either case, the NSBundle object itself is
released, because once I have the class object, I don't need the bundle object
itself anymore.
Here's the basic idea of what I'm doing (minus obvious error checking, etc)
for (NSString * potentialPluginPath in pluginFolder) {
NSBundle * plugin = [[NSBundle alloc] initWithPath:potentialPluginPath];
[plugin load];
Class principalClass = [plugin principalClass];
if ([principalClass conformsToProtocol:myPluginProtocol]) {
[plugins addObject:principalClass];
} else {
[plugin unload];
}
[plugin release];
}
My question is this (and the documentation, from what I've seen, is mute on the
subject): when an NSBundle object is deallocated, is its associated code
automatically unloaded, or does it stay loaded in the runtime?
Thanks!
Dave
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Cocoa-dev mailing list ([email protected]) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [email protected]
