Which is more efficient way? StoryBoard or XIB?
我的问题与我的标题建议略有不同。
我曾与xib合作。 现在,我正在尝试使用情节提要。
我的问题是,如果我们要从一个班级浏览另一个班级,那么StoryBoard是否在为更好的内存管理提供好处。
假设我们有2个ViewController:ViewControllerA和ViewControllerB。
我们正在尝试通过ViewControllerA-> ViewControllerB。
现在,在Xib中,我们的方法如下:
1 2 | ViewControllerB *VCB = [ [ViewControllerB alloc] init]; [self.navigationController pushViewController: VCB Animated: YES]; |
在故事板中,
1 2 3 4 5 6 7 8 | -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"Second"]) { SecondViewController *objSecond = (SecondViewController*)[segue destinationViewController]; } } |
而且,
1 | [self performSegueWithIdentifier:@"Second" sender:self]; |
因此,我的问题是我们在Xib中分配我们的课程,而在StoryBoard中则不在。
因此,情节提要中有任何内存分配优势吗?
我的观点是,如果开发人员使用故事板,那么专业的开发人员
故事板
在用一个故事板进行了3年的项目工作之后,我可以说一个
1)即使很少考虑(构建中的每个视图都必须重建),构建起来的速度确实非常慢。如果Storyboard变大,即使使用8或16 GB RAM的iMac,也很难进行编辑。甚至很难打开它。
2)没有可重用性。您无法立即将具有其视图的View / ViewController导入另一个项目。它将与其他ViewController,Views或Segues连接在一起,这将使其像一个大的"不要碰"的想法。
3)即使增加或编辑最小的布局约束,项目变大时也会有很大的滞后,您再也不想碰它了。
4)如果通过情节提要的自动单元格添加使用单元格,则不能在两个点上使用同一单元格构建。
优点:
1)自动像元(但这也是一个缺点,因为像其他视图一样,像元无法重复使用)
2)Segues等可以使人们很容易从单一角度了解正在发生的事情。
Xibs:
1)完全便携。
2)打开/编辑/构建速度比故事板大得多
结论:
如果您是一个业余爱好者开发人员,并且会为自己的业务制作应用程序而乐,那么您应该使用情节提要,因为这样会更容易理解。
但是,如果您是专业的开发人员,则必须对VC,Cells等使用xibs,因为这是使它们真正可重用和可移植的唯一方法,以便为下一个项目赢得大量时间,甚至在进行一些更改或再次构建情节提要。
解释为什么xib对我来说更"可重用且可移植":
编程中的事物必须保存在不同的模型,文件,实体,模块中。一个人必须尽可能少地依赖另一件事
并不是说哪个是最好的。因为根据团队的需求来判断哪个是好的。
如果您是一个开发人员,则最好使用情节提要,因为它消耗的时间更少。如果团队由许多开发人员组成,请使用xib,否则,合并模块/任务并不容易。
Xcode使用故事板和Xibs与以编程方式创建视图
使用XIB
优点:
-
您可以快速组合用户界面
-
屏幕数量最少的小型应用程序的直接实现
-
您可以为不同的本地化(即语言或国家/地区)设置单独的XIB
-
擅长布局元素并在视觉上发现未对准之处。对布局稍作调整很容易
缺点:
-
在团队环境中工作时,很难合并冲突(很难区分,合并和阅读)
-
高度动态的视图无法描述为XIB
-
从性能角度来看,它比通过代码创建视图要慢,因为需要从磁盘读取xib并进行分析/解析
-
XIB缺少您可以在代码中完成的自定义设置,例如Quartz东西(阴影,圆角)
-
难以调试(即,如果您忘记在Interface Builder中建立连接或建立错误的连接)
故事板
优点:
-
故事板非常适合中小屏幕的应用,并且视图之间的导航要求相对简单
-
您可以在不编写太多代码的情况下模拟应用程序的流程
缺点:
-
故事板与iOS 5之前的版本不兼容,因此无法支持iOS 4.3
-
在团队环境中并行工作很困难,因为每个人都在修改同一文件
-
同样,在GIT中合并冲突的故事板将是一件痛苦的事情
-
人们在使用故事板时遇到了Xcode中的错误(例如,由于不一致而不得不频繁刷新DerivedData文件夹)
比较XIB和StoryBoard,StoryBoard速度很快。
但是当以编程方式完成整个项目时实际上速度很快。
当我们编译所有StoryBoard时,将在Storyboard中将其存档。并取消存档,然后运行该应用程序。
但是,以编程方式,仅在运行时分配类。
推荐做使用情节提要的项目。
苹果工程师现在强烈建议使用故事板,强烈建议每件事都是中心,而内存管理则由编译器完成。设计人员在某些情况下要求如何推动控制器,并且没有问题。但建议使用情节提要,并且易于理解,它是MVC的查看部分
就情节而言,使用情节提要是一个更好的选择,尽管情节提要相对于xib文件还具有其他优势,Apple还建议对情节提要使用情节提要而非xib文件。