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

Cheok Yan Cheng

有两种不同的方法可以从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直到iOS 4才被添加。在此之前,没有任何方法可以表示NIB本身,并且您无法从数据(NSData / Data)中加载NIB。当您不想缓存NIB时,或者当您想动态加载NIB(而不是从捆绑软件中)时,添加了一些技巧。但是这些确实是不起眼的案例。

通常,Bundle版本会短一些,这也是我推荐的版本。但是,无论您喜欢哪个。它们是等效的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在创建 docker 容器时,我应该更喜欢在 Dockerfile 中定义安装还是添加一个从 DockerFile 调用的脚本?

从多个数据源创建DataFrame时,我们应该使用for循环还是列表理解?

在查看软件要求时,我们应该使用突发速度还是正常时钟速度

查询MongoDB时,我们应该使用Query还是Query <T>?

我应该在main()内部还是外部定义函数?

我们应该使用序列还是身份作为我们的主键?

可以退出代码还是应该终止main?

我们如何引用位于Android Main Project目录之外的自定义Android和Java库?

Netlify-我应该为自定义域使用CNAME还是A记录

我应该使用加密还是哈希来生成自定义参考ID?

我应该使用本机ES6 Promises + polyfill还是自定义的Promise库?

我应该使用类别还是自定义帮助程序类?

对于自定义 Live CD,我应该使用 /etc/skel 还是 /etc/profile.d?

在CSS中定位图片元素时,我们应该使用img还是图片选择器?

我应该从main()返回EXIT_SUCCESS还是0?

我应该将枚举放在 int main() 外面还是里面?

当我使用 UEFI + GPT 安装带有自定义分区的 Ubuntu 16.04 时,我应该选择主分区还是逻辑分区?

使用HTTP / 2时,我们是否应该比Websocket更喜欢SSE + REST?

集合视图UINib在自定义UIView中注册崩溃,意外发现nil

C++ 我应该更喜欢联合还是异常

应该使用“ invokeLater”创建第一个JFrame还是可以直接从main创建它?

我们应该在子进程中使用退出还是返回

我们应该使用lambda还是匿名类来观察LiveData

我们应该使用元组还是列表作为index_together

我们应该使用Azure Service Bus Queue内置的CorrelationId属性还是UserProperties?

我们应该在Android中使用getPath还是getAbsolutePath

Hyperledger Fabric:我们应该使用 Fabric 还是 Docker 提供的 TLS?

我们应该使用clone还是BeanUtils.copyProperties以及为什么

我们应该在数据框上使用groupBy还是reduceBy