performSelector
延时调用的问题 performSelector
关于内存管理的执行原理是这样的:执行 [self performSelector:@selector(method1:) withObject:self afterDelay:3];
的时候,系统会将self的引用计数加1,执行完这个方法时,还会将self的引用计数减1,当方法还没有执行的时候,要返回父视图释放当前视图的时候,self的计数没有减少到0,而导致无法调用dealloc方法,出现了内存泄露。 所以最后我的解决办法就是取消那些还没有来得及执行的延时函数,代码很简单:
[NSObject cancelPreviousPerformRequestsWithTarget:self]
复制代码
当然你也可以一个一个得这样用:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(method1:) object:nil]
复制代码
加上了这个以后,dealloc方法就会被调用,问题解决!