gpt4 book ai didi

ios - 在 Xib 文件中实例化 View Controller 如何导致难以理解和调试的代码?

转载 作者:行者123 更新时间:2023-12-03 19:02:31 25 4
gpt4 key购买 nike

在介绍iOS Programming: the Big Nerd Ranch Guide ,作者说他们总是以编程方式创建 View Controller ,并且在 Xib 文件中实例化 View Controller 会导致难以理解和调试的项目。

具体来说,是什么导致了这个问题?你会遇到哪些困难?

有没有具体的例子,在代码中创建 View Controller 如何避免这些问题?

最佳答案

引言在介绍 > 风格:

We will always create view controllers programmatically. Some programmers will instantiate view controllers inside XIB file. We've found this practice leads to projects that are difficult to comprehend and debug.

他们谈论实例化。如果你有两个 View Controller A、B,你可以在 A 的实现中分配/初始化 B,或者你可以在 A 的 XIB 中删除对 B 的引用。在这两种情况下,B 都可以在 XIB 中定义,也可以不在 XIB 中定义(顺便说一句,Big Ranch 的书建议将 XIB 用于复杂的 View Controller )。


无论如何,区别在于:

CitySelectionVC *citySel = [[[CitySelectionVC alloc] initWithCities:self.cities] autorelease];
[self.navigationController pushViewController:citySel animated:TRUE];

对比

citySel.cities = self.cities;
[self.navigationController pushViewController:citySel animated:TRUE];

第一种情况是代码中的显式实例化。它告诉我:

  • 现在创建了 VC。
  • 它需要城市运作。

第二个 block 中的代码引用了 XIB 中实例化的 socket 。它告诉我:

  • VC 在未知时间以未知要求实例化。
  • 我正在经过城市。

我喜欢第一种风格,因为它更明确,并且让我可以控制对象的生命周期。

在 iOS 5 中,您可以使用 Storyboard来创建过渡并在 Controller 之间传递信息。请参阅 WWDC2011 的第 309 节。

关于ios - 在 Xib 文件中实例化 View Controller 如何导致难以理解和调试的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com