iOS 7.1 和 iOS 8 中的 viewDidAppear 之间是不是存在会影响设置变量的区别?

Posted

技术标签:

【中文标题】iOS 7.1 和 iOS 8 中的 viewDidAppear 之间是不是存在会影响设置变量的区别?【英文标题】:Is there a difference between viewDidAppear in iOS 7.1 and iOS 8 that would effect setting up a variable?iOS 7.1 和 iOS 8 中的 viewDidAppear 之间是否存在会影响设置变量的区别? 【发布时间】:2014-10-08 17:15:32 【问题描述】:

ios 7.1 中,我在 viewDidAppear 方法中设置了一个整数变量。一开始它可以工作,但是在导航到另一个视图控制器并导航回来之后,我的整数变量现在设置为零。如果我将整数变量设置移动到 viewDidLoad 它每次都有效。

在 iOS 8 中,它每次都在 viewDidAppear 方法中起作用。

为什么这在 8 中有效,但在 7.1 中无效?

【问题讨论】:

您是否进行过任何调试以查看将其设置为零的原因? 如果这是一个属性,您可以覆盖访问器并在其中放置一个断点,以查看您的代码何时访问它。当然,这意味着您必须在代码中始终如一地使用点运算符才能使其完全有用。 请记住,调用各种 UI 委托方法的确切顺序可能因版本而异(甚至在单个版本中,也因情况而异)。另外,我的理解是 iOS 8 比 7 更频繁地重新创建视图(即重新执行 viewDidLoad),所以如果您的引用不是当前正在显示的视图,那么您不应该依赖 viewDidAppear 中的初始化。跨度> 【参考方案1】:

关于viewDidAppear,我无法谈论 iOS 7 和 iOS 8 之间的区别,这里有一些我希望有用的链接来看看。

回答了一个涉及呼叫/事件周期的问题,其中包含您可能会发现有用的图形:

iOS 7 - Difference between viewDidLoad and viewDidAppear

此链接使用UINavigationController 引用UIViewController,而UINavigationController 又管理其他UIViewControllers,而viewDidAppear 消息在层次结构中丢失。修复是确保导航控制器显式调用viewDidAppear,以便将其传递给子视图。

http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/

不确定您的具体情况,但希望这些会有所帮助。

【讨论】:

这是评论,不是答案。 没有以上评价的信誉点。随意移动它。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 我对您的答案投了赞成票,这使您超过了需要发表评论的 50 名代表。将来,这样的帖子应该作为评论而不是答案。我让它滑动有两个原因:1 - 这个问题让我觉得质量低下,基本上是要求提供文档链接。 2 - 在我投赞成票之前,您没有足够的代表发表评论。现在你这样做了,所以不要再这样做了。 @KhanhNguyen 这是很好的反馈 - 非常感谢。

以上是关于iOS 7.1 和 iOS 8 中的 viewDidAppear 之间是不是存在会影响设置变量的区别?的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发-47怎样下载iOS 7.1 Simulator 以及iOS 8离线的Documentation这些文件?

为 iOS 7.1 编程并使用 UIAlertView,这是不是也适用于 iOS 8.0?

BLE 在将数据从 iOS 7.1 发送到 iOS 8 时花费了太多时间

Testflight 不允许使用 iOS 8.1 SDK 编译的 iOS 7.1 应用程序安装在 iOS 7.1.2 iPhone 上

初始屏幕显示完美适用于 ios 7.1 但不适用于 iPad 中的 ios 6.1

iOS 7.1 UITableView layoutSubviews 问题