【发布时间】:2015-09-16 09:22:00
【问题描述】:
尝试以非常快的速度连续加载数百个UINib(在不到 0.5 秒的时间内一个接一个)。
UINib 包含 UIButton 和一个相对较小的图像(每个笔尖不同)。
我试过这个:
UINib *nib = [UINib nibWithNibName:viewName_ bundle:[NSBundle mainBundle]];
[nib instantiateWithOwner:self options:nil];
mainView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
还有这个:
mainView = [[[NSBundle mainBundle] loadNibNamed:viewName_ owner:self options:nil] objectAtIndex:0];
最后一个速度快了几毫秒,CPU 使用率分别为 92% 和 97%。
更快地加载这些笔尖的最佳方法是什么?或者有更好的方法吗?
谢谢
【问题讨论】:
-
我的第一个想法是为什么要加载几百个 NIBS。您能否详细说明您要实现的目标。
-
@rckoenes 这是应用程序设置的方式。在下一个笔尖上慢慢走不是问题。当“滚动”非常快时,CPU 会发疯! (滚动我的意思不是滚动......我的意思是前进到下一个笔尖)
-
在我看来设计是错误的。为了使滚动速度更快,您需要尽可能多地重用视图。就像在表格视图中一样。加载也需要时间,并且无法真正改善。但是重用视图可以。
-
@rckoenes 感谢您的意见。该应用程序的设计考虑了所有参数,这是最好的设计模型。它不能改变。显然,要解释我们为什么这样做,需要的不仅仅是评论。你必须相信我
-
我认为问题在于我正在加载的 UIButtons。当按钮少于 10 个时,这不是问题。但是,当超过 25 岁时,一切都变得混乱了。
标签: ios objective-c uiview uinib