尝试更改按钮图片,稍等片刻,然后更改回来。没有太多的运气试图让它工作,所以有没有办法让程序暂停一秒钟,没有一个计时器实际执行任何东西,也没有程序继续执行代码?
问问题
776 次
2 回答
4
尝试将您的更改代码放入一个方法中,并从您的更改方法中调用:
[self performSelector:@selector(changeBack:) withObject:nil afterDelay:1.0];
于 2010-05-19T10:44:42.797 回答
1
你可以打电话
// sleep first appeared in Version 7 UNIX, 1979
sleep(1);
或者,更现代的:
// usleep appeared in 4.3 BSD, released 1986
usleep(1000000);
或者,再次更现代:
// nanosleep can be found in POSIX.1b, published 1993
struct timespec ts;
ts.tv_sec = 1;
nanosleep(&ts, NULL);
或者,更现代、更 Cocoa-y:
// +sleepForTimeInterval first appeared in Mac OS X 10.5, 2007
[NSThread sleepForTimeInterval:1.0];
所有这些都会停止当前线程。如果您的应用程序只有一个线程,那么这意味着它将停止您的整个应用程序。在睡眠期间,它将对任何用户界面事件都没有响应。
NSObject 参考显示了一个名为performSelector:withObject:afterDelay:的方法。此方法通过在运行循环中调度它来在指定的延迟后执行选择器。这意味着运行循环继续循环并处理事件、触发计时器、耗尽自动释放池、发送更多预定消息等等。
在这种特殊情况下,最好在运行循环中安排选择器(提供将图像变回的选择器并提供一秒的延迟)。
于 2010-05-19T12:04:39.080 回答