Iphone 如何检查是否存在';这是一个性能选择器:正在等待执行?
在我的iPhone应用程序中,我有几个地方可以做一些简单的操作Iphone 如何检查是否存在';这是一个性能选择器:正在等待执行?,iphone,objective-c,cocoa-touch,cocoa,performselector,Iphone,Objective C,Cocoa Touch,Cocoa,Performselector,在我的iPhone应用程序中,我有几个地方可以做一些简单的操作 [对象性能选择器:withObject:afterDelay:] 打电话。所有这些都导致了相同的方法。现在,在这个方法中,我只想在最近一次调用它时执行一些代码。如果是第一个,我只需执行[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(thisMethod)object:nil],并确保调用一次 但是,有没有办法判断是否还有其他方法调用等
[对象性能选择器:withObject:afterDelay:]
打电话。所有这些都导致了相同的方法。现在,在这个方法中,我只想在最近一次调用它时执行一些代码。如果是第一个,我只需执行[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(thisMethod)object:nil]
,并确保调用一次
但是,有没有办法判断是否还有其他方法调用等待执行
我可以在这个类中使用一个计数器,每次我设置这个performafterdelay时,它都会递增,然后在每次调用开始时递减,并且只有当这个计数器为零时才执行代码。但我想知道这是否是最好的/可接受的方法 您可以这样做:只要在调用
[object performSelector:withObject:afterDelay:][/code>的任何时候添加上面提到的行即可。实际上,您可以创建一个方法来处理这个问题。例如:
- (void)performSelectorOnce:(SEL)selector withObject:(id)object afterDelay:(NSTimeInterval)delay
{
[NSObject cancelPreviousPerformRequestsWithTarget:object selector:selector object:object];
[self performSelector:selector withObject:object afterDelay:delay];
}
而且比以往任何时候使用的[object-performSelector:withObject:afterDelay:][/code>只需将其替换为[self-performselection:withObject:afterDelay:]
如果要在多个对象中使用此方法,则可以实际创建一个NSObject类别并在其中添加方法
让我知道这是否适合您。如果您只想忽略连续的呼叫而不修改第一个预定呼叫,该怎么办?例如,用于更新表视图的调用。