Iphone 有没有一种方法可以编写一个NSTimer,这样它就可以暂停程序一秒钟?

Iphone 有没有一种方法可以编写一个NSTimer,这样它就可以暂停程序一秒钟?,iphone,objective-c,nstimer,Iphone,Objective C,Nstimer,尝试更改按钮图片,请稍等片刻,然后再更改回。没有太多的运气尝试让它工作,那么有没有一种方法可以暂停程序一秒钟,而不让计时器实际执行任何事情,也不让程序继续执行代码?尝试将更改代码放回方法中,并从更改方法调用: [self performSelector:@selector(changeBack:) withObject:nil afterDelay:1.0]; 你可以打电话 // sleep first appeared in Version 7 UNIX, 1979 sleep(1); 或

尝试更改按钮图片,请稍等片刻,然后再更改回。没有太多的运气尝试让它工作,那么有没有一种方法可以暂停程序一秒钟,而不让计时器实际执行任何事情,也不让程序继续执行代码?

尝试将更改代码放回方法中,并从更改方法调用:

[self performSelector:@selector(changeBack:) withObject:nil afterDelay:1.0];
你可以打电话

// 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);
或者,更现代、更时尚:

// +sleepForTimeInterval first appeared in Mac OS X 10.5, 2007
[NSThread sleepForTimeInterval:1.0];
所有这些都将停止当前线程。如果应用程序只有一个线程,那么这意味着它将停止整个应用程序。在睡眠期间,它将对任何用户界面事件无响应

NSObject引用显示了一个名为的方法。此方法通过在运行循环中调度选择器,在指定延迟后执行选择器。这意味着运行循环将继续循环并处理事件、触发计时器、耗尽自动释放池、发送更多计划消息等等


在这种特殊情况下,最好在运行循环中安排选择器(提供更改图像的选择器并提供一秒钟的延迟)。

是否有方法将这两个对象传递给选择器的参数?我发现其中一个有2个withObject:'s,但这一个没有延迟。@marty:将两个对象都添加到NSArray并将NSArray作为对象传递。我更喜欢使用字典,因为它可以轻松扩展到任意数量的命名参数,比数组更具可读性/可维护性。