Thanks for the input everyone. For those curious, this is the final code: - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { NSError *err = nil; NSString *utiFile = [[NSWorkspace sharedWorkspace] typeOfFile:filename error:&err]; if (err) { NSRunAlertPanel(NSLocalizedString(@"Error opening file",nil), [NSString stringWithFormat:NSLocalizedString(@"Unable to open %@: %@", nil), [filename lastPathComponent], [err localizedFailureReason]], nil, nil, nil); return NO; } NSArray *handlers = [NSArray arrayWithObjects:[PcsxrPluginHandler class], [PcsxrMemCardHandler class], [PcsxrFreezeStateHandler class], [PcsxrDiscHandler class], nil]; BOOL isHandled = NO; for (Class fileHandler in handlers) { NSObject<PcsxrFileHandle> *hand = [[fileHandler alloc] init]; BOOL canHandle = NO; for (NSString *uti in [fileHandler supportedUTIs]) { if ([[NSWorkspace sharedWorkspace] type:utiFile conformsToType:uti]) { canHandle = YES; } } if (canHandle) { isHandled = [hand handleFile:HandleBinCue(filename)]; } [hand release];
} return isHandled; } On Dec 18, 2011, at 12:22 PM, Charles Srstka wrote: > You can just send the alloc/init message directly to the class object. > > Charles > > On Dec 18, 2011, at 11:01 AM, C.W. Betts wrote: > >> Let me see if I got this right. Create an NSArray with classes like this: >> [NSArray arrayWithObjects:[ClassName1 class], [ClassName2 class], nil] >> Then how would I call it? Would [[[anArray objectAtIndex:i] alloc] init] >> work? Or would I have to use a pure C method, something along the lines of >> getIdFromClass()? >> On Dec 18, 2011, at 2:20 AM, Charles Srstka wrote: >> >>> On Dec 18, 2011, at 3:14 AM, Ken Thomases wrote: >>> >>>> On Dec 18, 2011, at 3:06 AM, Charles Srstka wrote: >>>> >>>>> On Dec 18, 2011, at 2:49 AM, Ken Thomases wrote: >>>>> >>>>>> On Dec 18, 2011, at 2:36 AM, Charles Srstka wrote: >>>>>> >>>>>>> On Dec 18, 2011, at 2:31 AM, C.W. Betts wrote: >>>>>>> >>>>>>>> So I would do something along the lines of [NSArray >>>>>>>> arrayWithObjects:ClassName1, ClassName2, nil]? >>>>>>> >>>>>>> Or just class1, class2, etc. where class1 and class2 are both of type >>>>>>> Class. >>>>>> >>>>>> You can use pointers to class objects, but you can't just use class >>>>>> names. If you are starting from class names, you use [ClassName1 class] >>>>>> to get the class object. >>>>> >>>>> Well, you *could* just use class names, if you used NSClassFromString() >>>>> before using the class. There wouldn’t be much point in doing that, >>>>> though, since class objects can fit inside arrays and would be more >>>>> convenient to use here. >>>> >>>> Did you mean for this to be off-list? Anyway, I took his use of >>>> ClassName1 to mean an identifier. After all, he didn't write >>>> @"ClassName1”. >>> >>> Nope, sorry, that was meant to be on-list. You’re probably right — I had >>> assumed that those were meant to be NSString variables, since that’s what >>> you’d need to be using if you were storing class names. Wasn’t thinking >>> from an Obj-C newbie perspective there; sorry. At any rate, getting the >>> class object by calling +class is, of course, the correct thing to do. >>> >>> Charles >>> >>> _______________________________________________ >>> >>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >>> >>> 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/computers57%40hotmail.com >>> >>> This email sent to computer...@hotmail.com >>> >> > > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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 arch...@mail-archive.com