ken*_*der 7 iphone cocoa cocoa-touch objective-c performselector
在我的iPhone应用程序中,我有几个地方可以做
[object performSelector: withObject: afterDelay:]
呼叫.所有都导致相同的方法.现在,在那个方法中,我想只在最近调用它时执行一些代码.如果它是第一个,我可以做,[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(thisMethod) object:nil]并确保它被调用一次.
但是,有没有办法判断是否有其他方法调用等待执行?
我可以在这个类中使用一个计数器,每次我在延迟后设置此执行时都会递增,然后在每次调用开始时递减它,并且只有在此计数器归零时才执行代码.但我想知道这是否是最好的/可接受的方法......
那么你能做的就是这样:只要你打电话,[object performSelector: withObject: afterDelay:]就可以添加上面提到的那条线.您实际上可以创建一个方法来为您处理.例如:
- (void)performSelectorOnce:(SEL)selector withObject:(id)object afterDelay:(NSTimeInterval)delay
{
[NSObject cancelPreviousPerformRequestsWithTarget:object selector:selector object:object];
[self performSelector:selector withObject:object afterDelay:delay];
}
Run Code Online (Sandbox Code Playgroud)
而且你使用的地方[object performSelector: withObject: afterDelay:]只需用[self performSelectorOnce:withObject:afterDelay:]替换它;
如果要在多个对象中使用它,则实际创建NSObject类别并在其中添加方法.
如果这对您有用,请告诉我.
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |