A) initWithNibName这个方法是UIViewController通过xib文件创建实例的方法;而loadNibNamed是UIView和UIViewController都可以通过xib文件创建实例的方法。
B) 加载的方式不同。initWithNibName有点像懒加载,是延迟加载,用到的时候才会加载;loadNibNamed是即时加载。
C) loadNibNamed加载的流程是:
init(coder:)
awakeFromNib()
viewDidLoad()
而initWithNibName加载的流程是:
init(nibName:bundle:)
loadView()
viewDidLoad()
D) 加载的类不同。initWithNibName加载的类就是我们定义的视图控制器,及xib文件中的File’s owner是控制器;
而loadNibNamed加载的实际是NSObject类型,及xib文件中的File’s owner是NSObject。
如果用了loadNibNamed加载initWithNibNamed用到的格式的xib文件 会报错误
setValue:forUndefinedKey load the xxxnib but the view outlet was not set.
网友评论