Swift中static静态变量的生命周期是怎样的?附iOS控制器场景疑问
答案
- 创建生效时机:
hasSeenTheLightOfDay是属于ViewControllerB类本身的静态存储属性,遵循Swift线程安全懒加载规则,会在ViewControllerB类第一次被访问(包括实例化该类、访问该类的任意静态成员)时完成初始化,默认值false同步生效。 - 销毁失效时机:该静态变量的生命周期和应用进程完全绑定,只要应用进程没有彻底终止(包括后台挂起未被系统回收的状态),它就会一直存在。只有当应用进程完全结束(用户手动杀掉App、系统因内存不足回收App进程)时,它才会被销毁失效,和
ViewControllerB的实例是否被释放没有任何关联。 - 多次进出的数值变化:第一次进入
ViewControllerB时,viewDidLoad执行会把变量赋值为true。后续不管多少次重复进入、退出ViewControllerB,哪怕ViewControllerB的实例被完全释放,静态变量也不会被重置,因此数值会一直保持true,不会来回变化。
内容的提问来源于stack exchange,提问作者AlanSTACK
相关产品推荐
相关产品推荐

