美文网首页
懒加载执行两次

懒加载执行两次

作者: 夜雨聲煩_ | 来源:发表于2021-04-26 13:35 被阅读0次
问题代码:
Class B
- (CPPhotoPreviewBottomView *)bottomView {
    if (!_bottomView) {
        _bottomView = [[CPPhotoPreviewBottomView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 100 - CP_Bottom_Margin, self.view.frame.size.width, 100 + CP_Bottom_Margin) modelArray:self.previewPicArray manager:self.manager];
    }
    return _bottomView;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.view addSubview:self.bottomView];
    // Do any additional setup after loading the view.
}
Class A
- (void)bottomViewPreviewBtnClick
{
    CPPhotoPreviewViewController *previewVC = [[CPPhotoPreviewViewController alloc] init];
    previewVC.previewPicArray = [NSMutableArray arrayWithArray:self.manager.selectedList];
    previewVC.manager = self.manager;
    previewVC.currentModelIndex = 0;
    previewVC.bottomView.currentModelIndex = 0;
    [self.navigationController pushViewController:previewVC animated:YES];
}

此代码,会造成懒加载执行两次,会同时创建两个内存地址完全不同的bottomView,view会加载第二个bottomView。可能会出现后续对bottomView的操作时对第一个进行操作,进而操作失效。

原因

ClassA中的按钮方法,会创建ClassB执行ClassB中的初始化方法,并在previewVC.bottomView.currentModelIndex中执行懒加载方法,注意此时viewdidload并未执行。在执行懒加载中bottomView的初始化过程中传入了self.view作为相关参数,因此在懒加载执行完前会调用viewdidload方法,而viewdidload中又调用self.bottomView,此时懒加载并未执行完,没有_bottomView返回,因此懒加载又被重新执行一遍,最终导致执行两遍。

相关文章

  • iOS 懒加载View可能出现的坑

    ⚠️ 可能会出现的BUG: View的懒加载执行了两次alloc 最近写代码时候遇到了懒加载执行两次的问题。代码如...

  • 懒加载执行两次

    问题代码: 此代码,会造成懒加载执行两次,会同时创建两个内存地址完全不同的bottomView,view会加载第二...

  • HolyShit!懒加载执行两次?

    前言:最近遇到了一个棘手的Bug,查找Bug的过程是心力憔悴。故抽空书写这篇文章记录下。 我们从App的页面加载说...

  • Swift语法点

    1 懒加载 懒加载与OC中的懒加载的区别:懒加载的类一旦 设置为nil 后, 懒加载就不会再次执行,与OC中不同,...

  • swift-懒加载

    懒加载 格式: 懒加载的写法本质上是定义并执行一个闭包

  • Swift学习笔记(2)

    懒加载 基本格式lazy var 变量: 类型 = { 创建变量代码 }() 例子 懒加载的写法本质上是定义并执行...

  • iOS 懒加载为什么加载两次的原因

    init 和 viewdidlaod 的执行先后顺序 init 中对自定义view进行访问触发了懒加载,懒加载操作...

  • hibernate(二)[延迟加载]

    什么是懒加载?他的作用? 延迟加载,也叫懒加载,它是hibernate为提高程序执行效率而提供的一种机制,即只有真...

  • 单例模式

    懒汉式 懒加载形式;加锁影响效率 饿汉式 非懒加载形式;没有加锁,执行效率会提高;类加载时就初始化,浪费内存。 双...

  • Swfit - 懒加载篇

    懒加载格式:lazy var 变量: 类型 = { 创建变量代码 }() 懒加载的写法本质上是定义并执行一个闭包 ...

网友评论

      本文标题:懒加载执行两次

      本文链接:https://www.haomeiwen.com/subject/ohosrltx.html