RootViewController *rvController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle mainBundle]];
有时我看到它使用nil,我不知道它究竟用于什么?
答案 0 :(得分:1)
此方法分配并初始化一个bundle对象(如果尚不存在)。新对象对应于应用程序可执行文件所在的目录。请务必检查返回值以确保您拥有有效的捆绑包。即使对于非捆绑应用程序,此方法也可能返回有效的bundle对象。
通常,主bundle对应于应用程序文件包或应用程序包装器:带有应用程序名称并以“.app”扩展名标记的目录。
根据文档,initWithNibName:bundle:只传入nil时调用它。
要在其中搜索nib文件的包。此方法首先在bundle的特定于语言的项目目录中查找nib文件,然后是Resources目录。如果为nil,则此方法在主包中查找nib文件。
所以,它们是等价的
答案 1 :(得分:1)
以下是对此的确切解释:
要搜索的捆绑包 nib文件。这个方法寻找 捆绑包中的nib文件 特定于语言的项目目录 首先是资源 目录。如果没有,这个方法看起来 对于主包中的nib文件。
我认为[NSBundle mainBundle]没有做任何不同于你把nil。但是,如果您想进行国际化和本地化,可以使用它们