Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何检查是否存在';这是一个性能选择器:正在等待执行?_Iphone_Objective C_Cocoa Touch_Cocoa_Performselector - Fatal编程技术网

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],并确保调用一次 但是,有没有办法判断是否还有其他方法调用等

在我的iPhone应用程序中,我有几个地方可以做一些简单的操作

[对象性能选择器: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类别并在其中添加方法


让我知道这是否适合您。

如果您只想忽略连续的呼叫而不修改第一个预定呼叫,该怎么办?例如,用于更新表视图的调用。