知识卡片
视图控制器生命周期的时序含义
内容
iOS 的[[MVC模式的解耦价值|视图控制器]]从创建到销毁要经过一串固定的回调时序:loadView 负责构造视图层级本身; viewDidLoad 表示视图已加载完成,是放置自定义初始化逻辑的常见位置;viewWillAppear / viewDidAppear 分别在视图即将、已经真正显示到屏幕上时触发;viewWillDisappear / viewDidDisappear 对应视图离开屏幕的时刻,但并不代表实例本身被销毁——系统会保留底层的 视图控制器不释放;只有 deinit 被调用时,实例才真正被完全回收。发散:区分”视图不可见”和 “实例被销毁”这两个不同阶段很关键——如果把只该在真正销毁时做的清理工作错放进 viewDidDisappear,会在用户频繁前后切换界面时被反复触发,造成资源浪费或状态错乱。
参考来源
《Swift 4从零到精通iOS开发》第15章《视图控制器与高级UI视图控件》