哪种方式更有效? StoryBoard还是XIB?

时间:2014-03-20 05:32:12

标签: ios objective-c storyboard xib

我的问题与我的标题建议略有不同。 我和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中我们不是。 故事板中是否有任何内存分配优势?

5 个答案:

答案 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

使用XIB

<强>优点:

  • 您可以快速整理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)

现在苹果工程师强烈推荐故事板,强烈建议每件事都是中心的,内存管理由编译器完成。在某些情况下,如何设计师要求推动控制器并且没有问题。但故事板是推荐的,易于理解的视图部分MVC

答案 4 :(得分:-2)

就内存利用率而言,使用Storyboard是一个更好的选择,尽管故事板还具有xib文件的其他优势,Apple还建议在xib文件上使用storyboard。