根据UIViewController
关于initWithNibName:bundle:
的评论
If you invoke this method with a nil nib name, then this class' -loadView method will attempt to load a NIB whose name is the same as your view controller's class.
我总是用与视图控制器相同的名字来命名我的nib。
这是一个不好的做法(即不安全,较慢,或可能导致问题的道路),只是传递nil给两个参数,而不是笔尖名称字符串?
这样做的主要动机是我发现在Xcode中使用重构选项不会重命名nib名称字符串(只重命名类名,无论它们在哪里使用)。因此,如果不小心返回并在各处重命名这些文件,就会导致崩溃。
不安全也不慢。它只是意味着将有一个额外的检查,以查看与您的类同名的NIB是否确实存在于bundle中,然后它将被加载,就好像您已经传递了NIB名称一样。除非您决定更改nib的命名方式,否则不会引起问题。在面对,有关于-initWithNibName:bundle:
是一个坏的初始化器的整个讨论,只是使用-init
是更好的。