nibNameOrNil到底意味着什么?

Tim*_*Tim 6 iphone cocoa-touch ios

initXCode生成的视图控制器上的默认方法签名是:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{ }
Run Code Online (Sandbox Code Playgroud)

我已经看到这些初始化了两个提供的值,只是nib名称(bundle为nil),或者nil两者兼而有之.一切似乎都有效.

UIViewController如何真正处理 self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];?只nil为两个值传递是否有缺点?

Rog*_*Rog 9

如果传递nil为nibName,则该方法将查找与视图控制器具有相同文件名的nib.

例如,如果您有一个调用的视图控制器MyViewController,它将查找一个MyViewController.xibnib文件.

如果找不到nib,则需要覆盖该loadView方法以创建并将UIView分配给控制器的视图插座.

- (void)loadView
{
    UIView *theView = [[UIView alloc] ...
    // Setup the main view
    self.view = theView;
}
Run Code Online (Sandbox Code Playgroud)