• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 iOS 中,导航时附加到 Controller 的对象会发生什么情况?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:42:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用 Swift 2 构建一个 iOS 应用程序,并且通常在每个 ViewController 中创建一个“Manager”类,该类在 ViewDidLoad 中保存有关该 View 的一些数据。这些是非常轻量级的对象,因此重新加载它们并不是什么大问题。

但我想知道这里的典型生命周期:只有在第一次实例化 UIViewController 并显示屏幕时才调用“ViewDidLoad”?还是每次用户访问时都会调用它,即使只是通过来自后续屏幕的“返回”?当应用被发送到后台并重新打开时会调用它吗?

在显示数据时,您会在哪里放置要引用的数据对象? (不是持久意义上的 - 我已经涵盖了)。

在相关方面,如果我在 didReceiveMemoryWarning 中释放了一些内存(“处理可以重新创建的任何资源”),那么我什么时候重新创建它们?是否仅在未加载/显示 View 时调用,以便我始终可以检查 viewDidLoad?

感谢您提供有关如何在 iOS 应用中管理对象/内存中持久性的任何见解。



Best Answer-推荐答案


当您通过推送新的 View Controller 或呈现新的 View Controller 离开 View Controller 时,原来的 View Controller 仍在内存中。

它具有强引用的任何对象也将保存在内存中。

如果内存压力太大,那么最终您的应用程序将被操作系统杀死。在此之前,您的 View Controller 将触发 didReceiveMemoryWarning 方法。 (即使不在屏幕上)。这是您摆脱所有可以轻松恢复的轻量级数据的机会。

就生命周期而言。

init 被调用一次。 (显然)

viewDidLoad 在第一次访问 Controller 的 view 属性时调用一次。

viewDidAppearviewWillAppear 等...被多次调用。当 View 出现在屏幕上或从屏幕上消失时。

您还可以使用 isBeingPresentedisMovingToParent 等属性来确定 View Controller 出现或消失的确切原因。 (您可以在文档中找到其他几个)。

在 Objective-c 中,我会为这类数据创建一个惰性属性,该属性会在首次访问时加载。然后在内存警告中将该属性设置为 nil。然后当我再次需要它时,它会再次加载。

我相信很快就会有类似的方法,但我不能 100% 确定它是什么。

关于ios - 在 iOS 中,导航时附加到 Controller 的对象会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33192507/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap