iPhone中[NSBundle mainBundle]的含义是什么?

时间:2010-08-03 02:05:16

标签: iphone bundle

RootViewController *rvController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]];

有时我看到它使用nil,我不知道它究竟用于什么?

2 个答案:

答案 0 :(得分:1)

http://developer.apple.com/mac/library/documentation/cocoa/reference/foundation/Classes/NSBundle_Class/Reference/Reference.html#//apple_ref/doc/uid/20000214-BCIDFECI

  

此方法分配并初始化一个bundle对象(如果尚不存在)。新对象对应于应用程序可执行文件所在的目录。请务必检查返回值以确保您拥有有效的捆绑包。即使对于非捆绑应用程序,此方法也可能返回有效的bundle对象。

     

通常,主bundle对应于应用程序文件包或应用程序包装器:带有应用程序名称并以“.app”扩展名标记的目录。

根据文档,initWithNibName:bundle:只传入nil时调用它。

http://developer.apple.com/iphone/library/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW15

  

要在其中搜索nib文件的包。此方法首先在bundle的特定于语言的项目目录中查找nib文件,然后是Resources目录。如果为nil,则此方法在主包中查找nib文件。

所以,它们是等价的

答案 1 :(得分:1)

以下是对此的确切解释:

  

要搜索的捆绑包   nib文件。这个方法寻找   捆绑包中的nib文件   特定于语言的项目目录   首先是资源   目录。如果没有,这个方法看起来   对于主包中的nib文件。

我认为[NSBundle mainBundle]没有做任何不同于你把nil。但是,如果您想进行国际化和本地化,可以使用它们

More details here