Kakao - loadNibNamed: owner: topLevelObjects: z załadowanego pakietu

W aplikacji Cocoa opartej na dokumencie tworzę kilka obiektów (wtyczek) z zewnętrznych pakietów, używając:

- (NSMutableArray *)getPluginsOfType:(Class)type;
{
    NSBundle *main = [NSBundle mainBundle];
    NSArray *allPlugins = [main pathsForResourcesOfType:@"bundle" inDirectory:@"../PlugIns"];

    NSMutableArray *availablePlugins = [NSMutableArray array];

    for (NSString *path in allPlugins)
    {
    NSBundle *pluginBundle = [NSBundle bundleWithPath:path];
    [pluginBundle load];
    Class principalClass = [pluginBundle principalClass];
    [availablePlugins addObject:principalClass];
    }
return availablePlugins;
}

W ramach każdego z nich ładowany jest plik nib podczas inicjowania, który wiąże widok główny z właściwością w mojej klasie wtyczek. Poniżej minimalnej definicji klasy wtyczki:

@interface Plugin

@property (strong) IBOutlet NSView *thePluginView;

@end

@implementation Plugin

- (instancetype)init
{
    self = [super init];
    if (self)
    {
        [NSBundle loadNibNamed:@"NibName" owner:self];
    }
    return self;
}

@end

Chociaż działa to dobrze, chcę zastąpić powyższe wywołanie NSBundle (ponieważ jest przestarzałe dla OS X 10.8+) i zastąpić je:

[[NSBundle mainBundle] loadNibNamed:@"NibName" owner:self topLevelObjects:nil];

Jednak użycie mainBundle w tym przypadku naturalnie nie powoduje ustawienia odniesienia do obiektów najwyższego poziomu w mojej klasie wtyczek. Podejrzewam, że mainBundle nie ma nic wspólnego z pakietem wtyczki.

Jak mógłbym to osiągnąć? Czy istnieje sposób na znalezienie „aktualnego” pakietu (być może pakietu, z którego pochodzi klasa wtyczek)?

Dzięki.

questionAnswers(1)

yourAnswerToTheQuestion