在-init,-viewdidload,-viewdidappear,-viewdiddisapper上做啥[关闭]
Posted
技术标签:
【中文标题】在-init,-viewdidload,-viewdidappear,-viewdiddisapper上做啥[关闭]【英文标题】:What to do on -init, -viewdidload, -viewdidappear, -viewdiddisapper [closed]在-init,-viewdidload,-viewdidappear,-viewdiddisapper上做什么[关闭] 【发布时间】:2014-02-17 07:54:21 【问题描述】:我知道以前也有人问过类似的问题,其中大部分是针对过时的 ios 版本,并没有完全回答版本的变化方面。
我们应该在视图控制器的这些方法中设置什么类型的对象以获得最佳性能?
我想要一个详细的答案,例如: 在 x 处声明 int 变量很好,因为 y 等等。 我想解释一下 NSString、NSInteger、UIImage、UI 元素、图形、网络调用、coredata 调用。
我们鼓励在 viewwilldisappear 中删除哪些类型的对象?
如果将所有这些都放在一个完整的答案中,那将对每个人都有用。
编辑:Difference between viewDidLoad and viewDidAppear 不好的问题 回答好,但不包括initiliize和viewdiddisappear
init method vs. a viewDidLoad type method 问题和答案遗漏视图出现和消失
iOS: What is the difference between -init and -viewLoad of a ViewController? 过时了,使用笔尖。
iPhone dev - create array in init or viewDidLoad 我不同意这个答案,可能从 2009 年开始有所改变。
【问题讨论】:
你应该读一本书,你所问的需要一个巨大的答案! 猜你是对的:) 我投票结束了一个过于宽泛的问题 - 但我没有改变从 iOS 6 迁移到 iOS 7 时使用这些方法的方式,并且据我所知这些方式是使用已更改。您真正需要做的就是阅读 Apple Docs developer.apple.com/library/ios/documentation/uikit/reference/…,这应该可以解释一切。 我不相信这些方法会发生很大变化,如果它们完全改变的话,所以这些问题仍然会提供信息。 依赖没有任何改变。为了表达你的观点并使其不那么广泛,我建议包括其中的 1 或 2 个,并说明你认为它们发生变化的原因,然后问你的问题。 【参考方案1】:初始化:
实例化您的类将使用的任何对象。如果它们要成为子视图,请不要将它们添加到视图中,您必须在视图加载后在 viewDidLoad 中执行此操作。
ViewDidLoad:
此时您的所有视图都已实例化,因此您可以进行任何修改、添加子视图等。
viewDidAppear:
意思是它所说的。如果您想每 5 秒更改一次背景图片,我会在这里启动计时器,因为您知道用户正在看到该视图。
ViewDidDisappear:
当前没有显示视图——所以整理一下你不需要的东西。
如果您搜索,还有很多其他帖子会更详细。
Link to Apple Doc (the first point of call)
【讨论】:
是的,我知道,就像我说的他们不涵盖 ios7 它们的行为方式与 iOS 6 中的完全相同以上是关于在-init,-viewdidload,-viewdidappear,-viewdiddisapper上做啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
UIViewController.View.Window 在 ViewDidLoad 方法中为空
在 init 方法完成之前调用 UIViewController viewDidLoad
在 init 中设置的属性在 viewDidLoad 之后是 nil 吗?
在viewDidLoad之前编写init方法将模型传递给视图控制器[重复]