iOS Swift Lazy var View失效问题解决

 更新时间:2023年07月05日 11:15:52   作者:rome753  
这篇文章主要为大家介绍了iOS Swift Lazy var View失效问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

lazy var使用失效

一般来说,在UIViewController里的UIView使用lazy var,可以确保在只第一次使用时创建。

但是如果在viewDidLoad()前访问这个View,那么这个View就会创建两次,说明Lazy var机制失效了。网上搜了一下,都是说Lazy var在多线程下会失效。然而我打印一下日志,两次创建都是在主线程。

原因分析

原因我猜测是UIViewController的创建采用了某种线程加速方法, 导致里面的方法有一些错乱?

在viewDidLoad()前不要访问里面的View,否则会导致莫名其妙难以排查的bug!

class NoSafeVC: UIViewController {
    lazy var myView: UIView = {
        let view = UIView(frame: view.bounds)
        print("create myView \(view) \(Thread.current)")
        return view
    }()
    init() {
        super.init(nibName: nil, bundle: nil)
        _ = myView // 提前访问
    }
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .gray
        view.addSubview(myView)
    }
}
create myView <UIView: 0x104b19730; frame = (0 0; 375 667); 
layer = <CALayer: 0x280fd1f40>> <NSThread: 0x281ae08c0>{number = 1, name = main}
create myView <UIView: 0x104b198a0; frame = (0 0; 375 667); 
layer = <CALayer: 0x280fd1fc0>> <NSThread: 0x281ae08c0>{number = 1, name = main}

以上就是iOS Swift Lazy var View失效问题解决的详细内容,更多关于iOS Swift Lazy var View失效的资料请关注脚本之家其它相关文章!

相关文章

  • 详解iOS App中UISwitch开关组件的基本创建及使用方法

    详解iOS App中UISwitch开关组件的基本创建及使用方法

    UISwitch组件就是我们平时在iOS设置菜单中开到的那种左右滑动的开关按钮,当然我们在开发时可以进行更多的自定义,这里我们就来详解iOS App中UISwitch开关组件的基本创建及使用方法
    2016-05-05
  • IOS实现微信朋友圈相册评论界面的翻转过渡动画

    IOS实现微信朋友圈相册评论界面的翻转过渡动画

    现在很多人几乎每天都离不开微信,大家有没有发现在点开微信相册的时候,想要在相册图片界面跳转查看点赞和评论时,微信会采用界面翻转的过渡动画来跳转到评论界面,点击完成又会翻转回到图片界面,这不同于一般的导航界面滑动动画,于是学着做了一下,有需要一起看看。
    2016-08-08
  • iOS实现折叠单元格

    iOS实现折叠单元格

    这篇文章主要为大家详细介绍了iOS实现折叠单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • iOS 进度条、加载、安装动画的简单实现

    iOS 进度条、加载、安装动画的简单实现

    这篇文章主要介绍了iOS 进度条、加载、安装动画的简单实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • 一篇文章搞定iOS的Cookie存取

    一篇文章搞定iOS的Cookie存取

    Cookie中文名称叫做“小型文本文件”,指某些网站为了辨别用户身份而存储在用户本地终端上的数据(通常经过加密),下面这篇文章主要给大家介绍了关于iOS的Cookie存取的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-12-12
  • iOS swift 总结NavigationController出现问题及解决方法

    iOS swift 总结NavigationController出现问题及解决方法

    这篇文章主要介绍了iOS swift 总结NavigationController出现问题及解决方法的相关资料,需要的朋友可以参考下
    2016-12-12
  • iOS改变UITextField占位文字颜色的三种方法

    iOS改变UITextField占位文字颜色的三种方法

    这篇文章主要为大家详细介绍了iOS改变UITextField的占位文字颜色的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • iOS毕业设计之天气预报App

    iOS毕业设计之天气预报App

    这篇文章主要为大家详细介绍了iOS毕业设计之天气预报App,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • iOS中关于模块化开发解决方案(纯干货)

    iOS中关于模块化开发解决方案(纯干货)

    这篇文章主要介绍了iOS中关于模块化开发解决方案(纯干货)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • iOS自定义UITableView实现不同系统下的左滑删除功能详解

    iOS自定义UITableView实现不同系统下的左滑删除功能详解

    关于左滑删除这块,相信不少朋友都遇到过。下面这篇文章主要给大家介绍了关于iOS如何自定义UITableView实现不同系统下的左滑删除功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09

最新评论