performSelector是运行时系统负责去找方法,在编译时不会对调用的方法做检查,只有在运行的时候才会检查,如果方法存在就调用,如果放不存在就不会调用。
afterDelay
是每10秒运行一次。在当前线程的runloop上执行aSelector消息,这个计时器的默认模式是NSDefaultRunLoopMode。当计时器触发时,会尝试从runloop中取出消息行,如果runloop运行的模式是NSDefaultRunLoopMode,那么就会执行它,如果当前runloop是其他模式,则会等待runloop处于NSDefaultRunLoopMode在运行。
转自:https://www.jianshu.com/p/b4d398ab18e4
if ([self respondsToSelector:@selector(functionname)]) {
[self performSelector:@selector(functionname) withObject:nil afterDelay:10.f];
}
注意 当我们使用了 performSelector
, 再不需要了的时候需要取消。可以调用下面的方法取消。 这个方法不能放在delloc
方法中调用,否则当前类一直无法释放。performSelector
需要持有类,才能调用方法,所以需要在delloc前将performSelector
需要持有的类释放,才能让类正常释放,可以放在返回的方法"closeSelf"
手势返回的监听方法- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
或者页面将要消失的生命周期中- (void)viewWillDisappear:(BOOL)animated
,依照当前页面逻辑放在不同的位置上。
[NSObject cancelPreviousPerformRequestsWithTarget:self];
网友评论