【发布时间】:2011-11-29 17:27:48
【问题描述】:
我必须停止并重新启动一个需要 1 到 2 秒才能执行的简单方法。如何实现?我已经尝试过[NSObject cancelPreviousPerformRequestsWithTarget:self],但它只能在延迟后与 performselector 一起使用。我也尝试过创建一个新线程,但它似乎不起作用...
这是我的方法:
-(IBAction)MyMethod
{
NSLog(@"start");
//Here is the code that takes time to execute. It regards UI intervention,graphic calculation, x and y position etc.
NSLog(@"end");
}
我想要这个效果:单击链接的UIButton 和方法开始(因此打印开始日志和结束日志)。如果我在打印NSLog 之前单击链接的UIButton,则该方法必须停止。这可能吗?
【问题讨论】:
-
那你为什么不用延迟为0的
performSelector:afterDelay:呢? -
cancelPreviousPerformRequestWithTarget 似乎只取消了一个方法的启动。所以如果这个方法已经启动,我不能停止并重新启动执行。例如,在我的代码中,如果我尝试在使用 cancelPreviousPerformRequestWithTarget 在开始和结束 nslog 之间执行时停止,则始终打印 End nslog。
标签: iphone objective-c multithreading methods