我想在2.0秒之后执行方法,但我想能够在5秒之前取消它,如果另一个调用,但我注意到cancelPreviousPerformRequestsWithTarget
发送对象nil和performSelector发送对象{ {1}}。
它会出问题吗?
NSString
答案 0 :(得分:6)
根据文档,如果您通过nil
,则只会取消使用nil
执行的请求。你应该存储以前的值。
先前使用performSelector注册的请求的参数:withObject:afterDelay:instance方法。使用isEqual:确定参数相等性,因此该值不必与最初传递的对象相同。传递nil以匹配最初作为参数传递的nil请求。
另外,如果您只使用此选择器进行延迟,则可以调用
[NSObject cancelPreviousPerformRequestsWithTarget:self]
这将取消之前发送给自己的所有请求
答案 1 :(得分:0)
您可以手动执行此操作:
为您的代码添加BOOL
值,默认值为NO
,如果进行了其他调用,则将其值更改为YES
。
在您的startRecordAfterDelay:(NSString*)name
方法中,检查BOOL
的值,如果是NO
,请继续操作,else
忽略该呼叫。