我正在安排一个在不久的将来用对象调用的方法,而对象只是一个随机的NSString,一旦我安排选择器就会消失。
所以我可以这样说:
[self performSelector:@selector(runMethod:) withObject:@"randomString" afterDelay:1.0f];
如果我需要取消它之前它会触发文档说使用:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(runMethod:) object:***];
runMethod:
)取消任何已调度的方法,但不知道"对象"? 有没有办法获取NSRunLoop中所有预定函数的列表,只需用for循环遍历它们,寻找具有特定选择器名称的函数?
答案 0 :(得分:0)
如果您需要取消某些内容,您应该组织一种更好的方式来安排它们,以便您可以实际检查其安排的内容以及与之相关的详细信息。可能的解决方案是具有一组参数的自定义类。在内部,此类运行一个计时器,该计时器在指定的触发时间执行操作。这个类的一个实例数组对于搜索和取消任意项来说是微不足道的。
答案 1 :(得分:-1)
根据我的理解,如果randomString
对您无用,请将nil
传递给performSelector...
和cancelPreviousPerform...
像这样:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(runMethod) object:nil];
[self performSelector:@selector(runMethod) withObject:nil afterDelay:1.0f];