使用 UI 或以编程方式创建 TableView 对象?

Posted

技术标签:

【中文标题】使用 UI 或以编程方式创建 TableView 对象?【英文标题】:Create TableView objects with UI or programmatically? 【发布时间】:2015-09-25 14:09:23 【问题描述】:

谁是最佳优化方式?

使用情节提要在我的 UITableView 中创建对象(拖放到我的单元格中),还是以编程方式创建对象(cellForRowAtIndexPath)?

当项目在设备中编译运行时,这两个选项哪个运行得更快?

【问题讨论】:

试试看哪个更快。 @maddy 我怎样才能做到这一点并在控制台日志上以秒为单位显示结果? init... 方法和viewDidAppear: 末尾获取当前时间。 为什么重要? iPhone 是不是太慢了以至于用户会注意到任何差异?没有。 【参考方案1】:

就纯粹的性能而言,代码创建的 UI 对象比任何 nibs / storyboards 对象都快,只是因为 storyboards 和 nibs 文件存储在磁盘上,直到它们被加载到内存中并被转换为 UIKit 对象。

话虽如此,这还取决于您如何实施它。如果您在故事板中使用原型单元格而不是每次在 cellForRowAtIndexPath 中创建单元格,那么故事板会因为重用单元格而获胜(尽管您也可以重用代码创建的单元格)。

再说一遍,通过代码创建 UI 所获得的性能优势非常小,甚至无法被人眼察觉。因此,对我来说,使用情节提要很容易在不污染代码的情况下创建界面。

您可以在此处看到一篇不错的文章:http://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code。这篇文章大约是。 1岁,但它仍然是准确的。

【讨论】:

【参考方案2】:

相同布局的有效性能相同。我会根据不同的需求选择一种方法。

Storyboard 原型单元可以更快地设置,更容易让 Autolayout 约束正常工作,但您不能在 Storyboard 之外重复使用该原型单元。如果需要在多个视图中使用相同的单元格布局,则需要在代码中编写表格视图单元格或使用 nib 文件。

另外,应该指出cellForRowAtIndexPath 在使用 Storyboard 原型单元格来配置单元格时仍然需要,假设您有某种动态数据要显示。同样,在编程方法中,您不应该在cellForRowAtIndexPath创建视图,而是配置它们。

【讨论】:

以上是关于使用 UI 或以编程方式创建 TableView 对象?的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 标题标签文本未使用情节提要或以编程方式更改

如果一切都是以编程方式创建而不使用情节提要,如何以编程方式调整 TableView 中单元格的高度?

使用 Objective-C iOS 以编程方式创建 TableVIew

UITableViewAutomaticDimension 以编程方式添加的图像

在IB中或以编程方式重用不同场景的视图

IOS/Objective-C:确定以编程方式创建的 tableview 中 imageView 的大小