File's Owner:当NIB文件被载入一个已经运行了一段时间的程序中时,现存的对象需要与NIB文件中读取出来的对象建立一些连接。File's Owner提供了连接功能。在NIB文件中,File's Owner其实就是在NIB文件载入前就已经存在于对象中的占位符。载入NIB文件的对象需要提供所有者对象,所有者就取代File's Owner的位置。
NSBundle:是用于程序中的资源目录。资源包括图片、声音、编译完成的代码和NIB文件。(用户也经常使用plug-in来代替bundle,即插件。)NSBundle类是Cocoa中处理bundle的一个专门的类。应用程序其实就是一个bundle。在Finder中。应用程序看起来与其他文件一样。但实际上是一个包含着编译完成的代码、NIB文件以及其他资源的目录,这个目录称为main bundle。
//获取程序的main bundle
NSBundle *myBundle = [NSBundle mainBundle];
//如果需要访问另一个目录里的资源,可以使用指定的路径来访问bundle
NSBundle * goodBundle;
goodBundle = [NSBundle bundleWithPath:@"~/Library/Application Support/MyApp/Good.bundle"];
//如果程序中有了NSBundle对象,那就可以如下操作访问资源
//扩展是可选的
NSString * path = [goodBundle pathForImageResource:@"Mom"];
NSImage *momPhoto = [[NSImage alloc]initWithContentsOfFile:path];
//Bundle可以包含一个代码库。通过访问bundle里面的类,bundle可以连接到库里面,通过类名来精心查找
Class newClass = [goodBundle classNamed:@"Rover"];
id newInstance = [[newClass alloc]init];
//如果不知道bundle里类的名字,可查找主类
Class aClass = [goodBundle principalClass];
id anIntstance = [[aClass alloc]init];