取消performSelector的执行的方法cancelPreviousPerformReques

performSelector关于内存管理的执行原理是这样的执行 [self performSelector:@selector(method1:) withObject:self.tableLayer afterDelay:3]; 的时候,系统会将tableLayer的引用计数加1,执行完这个方法时,还会将tableLayer的引用计数减1,因为延迟这时tableLayer的引用计数没有减小到0,也就致使了切换场景dealloc方法没有被调用,出现了内存泄露。 函数

利用以下函数: orm

[NSObject cancelPreviousPerformRequestsWithTarget:self] 内存

固然你也能够一个一个得这样用: get

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(method1:) object:nil] it

加上了这个之后,顺利地执行了dealloc方法 内存管理

在touchBegan里面 io

[self performSelector:@selector(longPressMethod:) withObject:nil afterDelay:longPressTime] table

而后在end 或cancel里作判断,若是时间不够长按的时间调用: form

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(longPressMethod:) object:nil] 原理

取消began里的方法

相关文章
相关标签/搜索