ACCESSUIScrollView使用不当导致的Bug

拓展滚动.

-(void)dealloc {
        _timer.invalidate()
        _timer=0
}

题材就出在animated这一个参数上,
那个参数会让滚动变成一个连发一定时长的动画片, 也就是说,
这一个函数不会即刻执行完毕, 而是会”飞”一段时间. 在飞的经过中, 对象销毁了,
可是艺术还在不断修改视图的属性, 这就招致了crash.
为此在目标销毁的时候, 要让在”飞”的情势, 停下来.
UIScrollView没有从来提供有关办法, 然而足以在销毁的时候,
非动画的滚动一次, 来截止可能存在的”飞”的滚动方法. 修改成下边代码后,
问题解决.

-(void)dealloc {
        [scrollView scrollRectToVisible:rect animated:NO]
        _timer.invalidate()
        _timer=0
}

明日修正了一个是因为UIScrollView使用不当的造成的bug.
场合是这般的:
在一个视图里, 有滚动突显的图片. 图片是置身一个UIScrollView里的,
利用一个定时器, 每隔一定时间, 比如三秒, 调用UIScrollView的轮转方法,
定时器周期调用的主意如下:

然后就意识, app在依次视图之间切换的时候, 会崩溃.
系统报EXEC_BAD_ACCESS, 开启僵尸对象之后(Enable Zombie Objects),
发现是地点的轮转视图代码访问了早已灭绝的对象.
在对象的销毁方法里, 已经结束并剔除了定时器, 怎么还会发出这种题材吧?

 -(void)dida {
        [scrollView scrollRectToVisible:rect animated:YES]
}

相关文章