美文网首页
对象提前释放的发现和处理2019-08-27

对象提前释放的发现和处理2019-08-27

作者: 雪里的懒猪 | 来源:发表于2019-08-27 10:48 被阅读0次
  • (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor clearColor];
    [self initView];
    SetRootViewControllerHandle *handle = [[SetRootViewControllerHandle alloc] init];
    [handle setRootViewController];
    }
    源代码是这样定义的,创建的临时变量;在SetRootViewControllerHandle.m文件中的方法实现如下

  • (void)setRootViewController
    {
    if (self.isLogin) {// 登录状态
    [self.viewModel initNetWorkOfGetUserInfo];

    } else {// 非登录状态
    LoginViewController *VC = [[LoginViewController alloc] init];
    VC.openType = OpenTypeRoot;
    BaseNavigationController *naviC = [[BaseNavigationController alloc] initWithRootViewController:VC];
    AppDelegateInstance.window.rootViewController = naviC;
    }
    }
    在登录状态下,直接网络请求数据后在进行视图控制器的变换操作,但是SetRootViewControllerHandle是临时变量,代码运行后就直接销毁了,但是网络请求是异步操作,就导致网络请求的对象提前释放,导致的结果闪退或者无反应,所以不应该定义为临时变量

@property (nonatomic,strong) SetRootViewControllerHandle *handle;

  • (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor clearColor];
    [self initView];
    self.handle = [[SetRootViewControllerHandle alloc] init];
    [self.handle setRootViewController];
    }
    增加对象的持有时间就好了咯

相关文章

  • 对象提前释放的发现和处理2019-08-27

    (void)viewDidLoad {[super viewDidLoad];self.view.backgrou...

  • 关于unrecognized selector sent to

    出现unrecognized selector sent to instance问题,大部分是因为对象被提前释放,...

  • Java内存分配总结

    Java 的内存管理就是对象的分配和释放的处理 1.分配:通过关键字new创建对象分配内存空间,对象存在堆中。2....

  • 使用performSelector

    因为是异步处理,所以记得如果提前释放页面的话最好退出 [NSObject cancelPreviousPerfor...

  • Objective-C内存管理

    引用计数 申请了一块内存空间,如果将指针置空了而没有释放对象,则会内存泄露,如果提前释放了对象,又很可能会有野指针...

  • Weak, Runtime

    iOS 中使用引用计数来判断一个对象是否该释放. Strong对象是通过objc_storeStrong来处理的,...

  • copy 和 retain 的区别

    copy 和 retain 的区别 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的...

  • HTML5元素拖拽drag与拖放drop

    一、什么是拖拽和释放? 拖拽:Drag释放:Drop拖拽指的是鼠标点击源对象后一直移动对象不松手,一但松手即释放了...

  • Netty源码_AbstractReferenceCounted

    为了管理和释放资源,netty 采用了引用计数的方式,当某个对象不在被其他对象引用时,释放这个对象锁所持有的资源来...

  • VBA编程基础2:处理对象和过程控制

    处理对象和集合 VBA编程要在处理对象和集合方面花费大量时间。VBA提供了两个重要的结构,可以简化对象和集合的处理...

网友评论

      本文标题:对象提前释放的发现和处理2019-08-27

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