Ios 使用NSObject确定挂起的操作
我正在显示一个UIView,其中包含一个按钮,用户可以选择撤消某些内容。视图保持可见几秒钟,然后关闭。我创建的视图如下所示:Ios 使用NSObject确定挂起的操作,ios,objective-c,nsobject,Ios,Objective C,Nsobject,我正在显示一个UIView,其中包含一个按钮,用户可以选择撤消某些内容。视图保持可见几秒钟,然后关闭。我创建的视图如下所示: [self performSelector:@selector(endUndoOption) withObject:self afterDelay:delay]; 然后,如有必要,使用以下命令取消该操作: [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(endUndoOp
[self performSelector:@selector(endUndoOption) withObject:self afterDelay:delay];
然后,如有必要,使用以下命令取消该操作:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(endUndoOption) object:self];
有没有办法确定是否有计划的操作(在本例中为endUndoOption)?或者计时器是否已经开始?目前,我正在使用BOOL标志执行此操作,但我想知道是否有方法检查是否有一个队列?谢谢 如果您检查Cocoa Pods()BlocksKit pod,NSObject上有一个特殊的类别,有两个非常有用的方法:
+(id)bk_performBlock:(void(^)(void))块后延迟:(NSTimeInterval)延迟代码>
返回一个id,该id是取消句柄
及
+(void)bk_cancelBlock:(id)句柄代码>
取消预定的演出
因此,为了实现您的目标,您可以将取消句柄存储在某些属性中,例如
self.endUndoCancellationHandle = [[self class] bk_performBlock:^{
[self endUndoOption];
self.endUndoCancellationHandle = nil;
} afterDelay:delay];
然后取消:
if (self.endUndoCancellationHandle)
{
[[self class] bk_cancelBlock:self.endUndoCancellationHandle];
self.endUndoCancellationHandle = nil;
}
要检查是否安排了某些内容,只需检查您当前是否拥有句柄:
if (self.endUndoCancellationHandle)
{
...
}