/** Return path for framework with name aName. */ + (NSString *)pathForFrameworkWithName:(NSString *)aName { NSMutableArray *names = [NSMutableArray array]; NSFileManager *manager = [NSFileManager defaultManager]; NSArray *paths; NSEnumerator *fenum; NSEnumerator *penum; NSString *path; NSString *file; NSString *name; paths = NSStandardLibraryPaths(); penum = [paths objectEnumerator]; while( (path = [penum nextObject]) ) { path = [path stringByAppendingPathComponent:@"Frameworks"]; fenum = [[manager directoryContentsAtPath:path] objectEnumerator]; if( ![manager fileExistsAtPath:path isDirectory:NO] ) { continue; } while( (file = [fenum nextObject]) ) { if( [[file pathExtension] isEqualToString:@"framework"] ) { name = [[file lastPathComponent] stringByDeletingPathExtension]; if([name isEqualToString:aName]) { return [path stringByAppendingPathComponent:file]; } } } } return nil; } /** Return bundle for framework with name aName. */ + (NSBundle *)bundleForFrameworkWithName:(NSString *)aName { return [self bundleWithPath:[self pathForFrameworkWithName:aName]];; }