使用 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