我的问题与我的标题建议略有不同。 我和xib合作过。现在我正在尝试使用故事板。 我的问题是,如果我们从另一个类中浏览一个类,那么StoryBoard可以为更好的内存管理带来好处。 假设我们有2个ViewControllers:ViewControllerA和ViewControllerB。 我们正试图通过ViewControllerA - > ViewControllerB。 现在,在Xib我们的方法如下;
ViewControllerB *VCB = [ [ViewControllerB alloc] init];
[self.navigationController pushViewController: VCB Animated: YES];
故事板中的位置,
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Second"])
{
SecondViewController *objSecond = (SecondViewController*)[segue destinationViewController];
}
}
而且,做,
[self performSegueWithIdentifier:@"Second" sender:self];
所以,我的问题是我们在Xib中分配我们的类,在storyBoard中我们不是。 故事板中是否有任何内存分配优势?
答案 0 :(得分:37)
我的观点是,如果他使用故事板,专业开发人员MUST use xibs
,但是一个业余爱好者,编程新手,开发人员可能会得到帮助。
<强>故事板强>
使用单个故事板进行为期3年的项目工作后,我可以告诉lot of disadvantages
:
1)即使是非常非常小的想法,它的构建也非常非常缓慢(其中的每个视图都必须重建)。如果故事板变大,即使使用带有8或16 GB RAM的iMac也很难编辑。打开它甚至很难。
2)没有可重用性。您无法立即将View / ViewController及其视图导入另一个项目。它将与其他ViewControllers,Views或Segues连接,这将使它像一个大的“不要触摸”的想法。
3)即使对于要添加或编辑的最小布局约束,项目变大也会有很多延迟,您永远不想触摸它。
4)如果通过自动添加故事板的单元格来使用单元格,则不能在两点中使用相同的单元格构建。
<强>优势:强>
1)自动单元格(但这也是一个缺点,因为单元格不能像其他视图一样重复使用)
2)Segues等可以让人们从单一角度理解正在发生的事情。
<强> Xibs:强>
1)完全便携。
2)打开/编辑/构建比变得更大的故事板更快
<强>结论强>
如果你是一个业余爱好者开发者,他会为自己的业务制作应用程序,那么你应该使用故事板,因为它更容易理解。 但是,如果你是一名专业开发人员,你必须将xib用于VC,Cell等,因为这是使它们真正可重复使用和移植的唯一方法,以便为下一个项目获得这么多时间,或者甚至不得不做一点改变或再次构建故事板。
解释为什么xib对我来说更“可重用和可移植”: 编程中的东西必须保存在不同的模型,文件,实体,模块中。一个人必须至少依赖另一件事,因为它可以得到
答案 1 :(得分:35)
不要说哪一个是最好的。因为根据团队要求,哪一个是好的。
如果您是单个开发人员,最好使用故事板,因为它消耗的时间更少。如果团队由许多开发人员组成,请使用xib,否则,合并模块/任务并不容易。
xcode-using-storyboards-and-xibs-versus-creating-views-programmatically
<强>优点:强>
您可以快速整理UI
使用最少数量的屏幕直接实施小型应用
您可以为不同的本地化(即语言或国家/地区)设置单独的XIB
非常善于布置元素并在视觉上发现错位。可以轻松调整布局
<强>缺点:强>
在团队环境中工作时难以合并冲突(难以区分,合并和阅读)
高度动态的视图无法描述为XIB
性能方面,它比通过代码创建视图要慢,因为xib需要从磁盘读取并进行分析/解析
XIB缺少您可以在代码中进行的自定义,例如Quartz内容(阴影,圆角)
难以调试(即如果您忘记在Interface Builder中建立连接或建立错误连接)
<强>优点:强>
故事板非常适合具有少量到中等数量屏幕的应用,并且视图之间的导航要求相对简单
您可以模拟应用程序的流程,而无需编写太多代码
<强>缺点:强>
故事板与iOS 5之前不兼容,因此无法支持iOS 4.3
在团队环境中很难并行工作,因为每个人都在修改同一个文件
同样,在GIT中合并冲突的故事板会很痛苦
人们在使用故事板时遇到了Xcode中的错误(例如由于不一致而不得不经常刷新DerivedData文件夹)
答案 2 :(得分:5)
比较XIB和storyBoard,StoryBoard很快。
但是当以编程方式完成整个项目时,实际上很快。
当我们编译所有storyBoard时,在故事板中的是存档到文件。然后unArchive运行应用程序。 但是,在编程方式中,只在运行时分配类。
答案 3 :(得分:0)
答案 4 :(得分:-2)
就内存利用率而言,使用Storyboard是一个更好的选择,尽管故事板还具有xib文件的其他优势,Apple还建议在xib文件上使用storyboard。