用UI或编程创建TableView对象?

问题描述:

谁是最佳优化方式?用UI或编程创建TableView对象?

使用故事板在我的UITableView中创建对象(拖放到我的单元格中),或以编程方式创建对象(cellForRowAtIndexPath)?

当项目编译并运行在设备中哪两个选项运行速度会更快?

+0

试试看看哪个更快。 – rmaddy

+0

@maddy我怎样才能做到这一点,并在控制台日志上显示秒数? – LettersBa

+1

在'init ...'方法和'viewDidAppear:'结尾获取当前时间。 – rmaddy

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

这就是说,它也取决于你如何实现它。如果您在storyboard中使用原型单元格,并且每次都在cellForRowAtIndexPath中创建单元格,则由于重用单元格(尽管您也可以重新使用代码创建单元格),故事板获胜。

而且,再说一次,通过使用代码创建UI所获得的性能赢得的收益是很小的,甚至不会被人眼所感知。因此,对我而言,使用故事板对于轻松创建界面而言不会污染代码是一件容易的事。

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

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

故事板原型单元可以更快地进行设置,更容易使Autolay约束正常工作,但是您无法在故事板之外重复使用该原型单元。如果需要跨多个视图使用相同的单元格布局,则需要使用代码或使用nib文件编写表格视图单元格。

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