一个崩溃-下拉刷新

reason: 'An instance 0x7f86e7a14000 of class TQRAPCompleteTableView was deallocated while key value observers were still registered with it. Current observation info: <NSKeyValueObservationInfo 0x6080008327c0> (
<NSKeyValueObservance 0x60800085bb10: Observer: 0x0, Key path: contentOffset, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800085e090>
<NSKeyValueObservance 0x60800085e960: Observer: 0x0, Key path: contentSize, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x60800085e270>
)'
复制代码

字面理解: 一个叫TQRAPCompleteTableView的类已经被销毁,但是它仍然注册着键值观察者。

我使用的SVPullToRefresh来做页面的下拉刷新。页面顶部有三个导航标签,我是这样实现的: 放一个滑动视图在控制器视图上,滑动视图的contentSize设置为宽度为屏幕宽度的3倍,然后分别自定义3个tableView,然后#import到该控制器中并依次放置在滑动视图content上。

当我进入该控制器,然后做pop操作,导致崩溃,报错见上。

当时对字面上说的键值观察有点摸不到头脑,然后搜了下,基本都是3年前的问答,而且是使用MJRefresh时导致的崩溃。给出的解决方法是:

- ( void )dealloc  
{  
    [header free];  
    [footer free];  
}  
复制代码

而我之前用过MJRefresh实现下拉刷新和上拉加载,并没有遇到过此问题,或许MJRefresh在某个更新解决了此问题,也可能我使用的场景并没有遇到此问题。 我这里使用的SVPullToRefresh,看了下源码也确实是利用了键值观察者来实现。但我并不能使用head free此解决我当前问题。 之前使用SVPullToRefresh也做过类似需求并未遇到此崩溃问题,看了下之前的代码一时也没发现问题所在。

然后打断点调试,最后发现, 3个tableView都需要添加下拉刷新和上拉加载,我以为我都添加了(我以为的以为错了),原来我只给先显示的tableView添加了下拉刷新和上拉加载,而后两个,其实并没有添加,但我却在后面的代码中调用了以下此类代码:

self.completeTableView.showsInfiniteScrolling = YES;

[self.completeTableView.pullToRefreshView stopAnimating];
[self.completeTableView.infiniteScrollingView stopAnimating];
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值