从XIB创建自定义视图时,我们应该更喜欢使用Bundle.main还是UINib



从XIB 创建自定义视图有两种不同的方法

Bundle.main

extension UIView {
static func instanceFromNib<T: UIView>() -> T {
return Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil)![0] as! T
}
}

UINib

extension UIView {
static func instanceFromNib<T: UIView>() -> T {
return UINib(nibName: String(describing: self), bundle: nil).instantiate(withOwner: self, options: nil)[0] as! T
}
}

我想知道,这两个之间有什么区别?

哪一种方式更好,还是真的无关紧要?

没有任何区别。前者是我通常使用的,但只是因为它是旧版本,所以我使用的内容比Storyboards之前稍微习惯一些。UINib直到iOS4才被添加。在此之前,没有任何方法来表示NIB本身,也无法从数据(NSData/data(加载NIB。当你不想缓存NIB,或者当你想动态加载NIB(而不是从Bundle(时,添加它会带来一些技巧。但这些都是非常模糊的角落案例。

Bundle版本通常只是短一点,这也是我推荐的。但不管你喜欢什么。它们是等价的。

相关内容