gpt4 book ai didi

ios - 使用 NSObject 确定挂起的操作

转载 作者:行者123 更新时间:2023-11-28 21:49:02 24 4
gpt4 key购买 nike

我正在显示一个 UIView,其中包含一个按钮,让用户可以选择撤消某些操作。 View 保持可见几秒钟,然后关闭。我正在创建如下 View :

[self performSelector:@selector(endUndoOption) withObject:self afterDelay:delay];

然后在必要时使用以下方法取消它:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(endUndoOption) object:self];

有什么方法可以确定是否安排了操作(在本例中为 endUndoOption)?或者如果计时器已经开始?目前我正在使用 BOOL 标志执行此操作,但想知道是否有一种方法可以检查是否有一个排队?谢谢!

最佳答案

如果您检查 Cocoa Pods ( http://cocoapods.org ) BlocksKit pod,http://zwaldowski.github.io/BlocksKit/ ,在 NSObject 上有一个特殊的类别,有两个非常有用的方法:

+ (id)bk_performBlock:(void (^)(void))block afterDelay:(NSTimeInterval)delay;

它返回一个 id,它是取消句柄。

+ (void)bk_cancelBlock:(id)handle;

取消预定的演出。

因此,为了实现您的目标,您可以将取消句柄存储在某些属性中,例如

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)
{
...
}

关于ios - 使用 NSObject 确定挂起的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018457/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com