使用实例代码如下:
// 第一个参数:多长时间会触发一次,以秒为单位
// 第二个参数:如果看到函数的参数有target,一般情况下,都用self
// 第三个参数:SEL,需要调用其他的方法,就是每次时钟被触发的时候,去执行的方法
// 最多可以带一个参数,就是时钟本身
// 第四个参数,暂时不用考虑,设置成nil
// 第五个参数:是否重复,通常会设置YES
_gameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
在时钟触发方法中,可以使用sender.fireDate获取到时钟被触发的时间
注意:使用NSTimer的时候,千万不要忘记调用invalidate方法关闭时钟。
NSTimer可能不会是及时相应触发时间的,它的执行优先级相对较低,因此,不要使用NSTimer去做实时响应需求较高的周期性操作。
声音和音效的播放
声音
- 需要导入AVFoundation框架
- 需要从Bundle中加载文件,播放之前需要使用preparePlay方法,准备播放
- 可以设置声音的循环次数、音量大小
- 播放效率相对略低,但是可以播放较大的声音文件
- 导入AudioToolBox框架
- 使用C语言的函数直接将音频加载到内存,通过SystemSoundID进行播放
- 在播放的时候,不容易中断,也控制不了音量
- 播放效率高,通常使用不超过2秒的音频文件
- 为了避免同一个音效文件在不同视图控制器中被重复加载,造成无谓的内存消耗,在使用音效时,通常会用一个数据字典进行维护