什么更有效:加载和添加笔尖或以编程方式创建自定义控件?

时间:2012-08-08 08:23:28

标签: objective-c ios performance user-controls custom-controls

我正在尝试找出哪种方法更适合在视图中创建相同的控件。 假设我有一个UIview,我想在其中显示100个自定义控件。 每个自定义控件包含2个uiImageView和3个uiLabel。 现在有两种方法可以做到这一点:

  1. 使用此控件创建一个nib,其文件所有者是UIView并使用InitWithFrame加载它100次。 所以我有100个uiViews,每个5个控件= 600个uicontrols

  2. 以编程方式创建控件,所有这些都在同一个uiview上。 所以我有5 * 100 = 500个uicontrols。

  3. 所以似乎方法2在内存消耗方面更好,但它真的吗? 以及每种方法的加载时间如何?哪个更好?

    谢谢

2 个答案:

答案 0 :(得分:1)

创建控件的第二种方法更快。两种解决方案都必须创建控件,但第一种方法有解析NIB文件的开销。问题是:第二种方法的速度要快得多。并且:第一种方法是如此之慢,以至于它会影响您的特定应用程序?

以下是定时短期事件的良好代码示例:http://zpasternack.blogspot.com/2012/07/high-resolution-timing-in-cocoa.html

答案 1 :(得分:1)

我发现第三种方法是最好的: 使用UITableView创建视图。 这样你就可以使用uitable的重用功能了。 如果您不重用控件(因为可以重用其行),问题中建议的两种方法将在某些时候创建内存警告。