iOS:将大型 XIB 重构为几个较小的 XIB 文件以提高速度
Posted
技术标签:
【中文标题】iOS:将大型 XIB 重构为几个较小的 XIB 文件以提高速度【英文标题】:iOS: Refactor Large XIB into a few smaller XIB files for speed 【发布时间】:2011-10-13 23:26:15 【问题描述】:在观看某些WWDC2011 videos
时,有人提到过大的nib files
会使您的应用需要一些时间来加载。我的应用程序不一定是这种情况,但我觉得我的nib
相当大。视频中的建议是将较大的 nib
制作成几个较小的,以加快加载时间。
也许我遗漏了一些东西,但我如何将一个大的 nib
拆分成较小的?我的UIViewController
在初始化时只会加载一个nib
。还有其他方法可以处理多个文件吗?
【问题讨论】:
【参考方案1】:正如您所指出的,您可以使用指定的 nib 初始化 UIViewController
以加载其 view
属性,这只是一个文件。但是,您不需要将所有 view
属性的子视图打包到同一个 nib 文件中。如果您有一些仅在某些时候可见的子视图,请考虑将它们拆分为自己的 nib 文件并使用 UINib
按需加载它们。如果您有一组UITableViewCell
子类或图块用于UIScrollView
的内容,您可能希望能够仅加载您实际需要的视图实例,而不是包含无关视图的大量 nib(例如,加载所有表格当您只使用其中一个时)。
【讨论】:
好的,使用 UINib 听起来是个好主意。因此,如果我在另一个 nib 文件中有 UIView,我可以调用 [UINib nibWithNibName:@"DetailView" bundle:nil];它会返回我的 UIView 对象吗? 没有。+nibWithNibName:bundle:
将返回一个 UINib 对象。然后,您可以在该 UINib 实例上调用 -instantiateWithOwner:options:
,该实例返回在 nib 中找到的所有***对象的数组,并将任何绑定与您提供的“所有者”连接起来。如果需要,您可以从该数组中从您的 nib 获取对象,但我更喜欢传递一个所有者,该所有者将有一些属性绑定到从 nib 加载的对象。 (developer.apple.com/library/ios/#documentation/UIKit/Reference/…)以上是关于iOS:将大型 XIB 重构为几个较小的 XIB 文件以提高速度的主要内容,如果未能解决你的问题,请参考以下文章
Matlab - 能够将一个结构的字段分解成几个较小的字段。