作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我用这个开始做某事:
> [self performSelector:@selector(runThis:) > withObject:thisObject > afterDelay:5.0];
稍后我应该使用哪个 1 来取消它,避免“runThis:”运行?
1> [NSObject cancelPreviousPerformRequestsWithTarget:self];
或
2> [NSObject cancelPreviousPerformRequestsWithTarget:self 2> selector:@selector(runThis:) 2> object:nil];
甚至不确定 1 和 2 之间到底有什么区别。
#1 是否会取消我的任何/所有的 PerformSelector,无论其名称如何?
#2 只取消一个,特别是“runThis:”?
(如果我有 3 个不同的 PerformSelector 运行“runThis:”怎么办?我如何指定要取消哪一个...使用 #1 或 #2?)
#1 似乎正确地取消了一些事情。
#2 似乎并没有取消任何东西......永远。
启动时传递 thisObject ...而取消时传递 nil 重要吗?
最佳答案
IIRC 两者都可以;第二个只是为您提供更细粒度的控制。
对于#2,您必须传入一个为 -isEqual:
返回 YES
的对象。与 NSNotification
不同,nil
对于该方法并不意味着“任何东西”。
关于iphone - PerformSelector 和匹配的cancelPreviousPerformRequestWithTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009540/
我已经使用performSelector启动了一个延迟线程,但用户仍然可以点击当前 View 上的后退按钮,从而导致调用dealloc。当发生这种情况时,我的线程似乎仍然被调用,这导致我的应用程序崩溃
我是一名优秀的程序员,十分优秀!