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里的方法