NSTimer的初始化、暂停、继续和终结

来源:互联网 发布:深圳华策数据 编辑:程序博客网 时间:2024/05/22 02:05

初始化

    NSTimer的初始化一般都是使用类方法,类方法有四个,主要区别就是是否使用scheduled和NSInvocation。    先说scheduled,初始化时使用了scheduled就就相当于以默认mode添加到NSRunLoop中,初始化后指定方法会被直接调用,未使用scheduled不会直接调用指定方法,需要调用[NSRunLoop currentLoop]的方法addTimer:forMode:方法,手动把NSTimer对象添加到NSRunLoop中后才会调用指定方法。    接下来再说NSInvocation的作用,使用selector只能传递一个参数,但是当你的方法需要传递多个参数时怎么办?这时就需要用到NSInvocation了,NSInvacation可以实现方法的多参数传递,具体用法我就不在这里多说了,读者可以自行查找。    除了上面说的4个类方法外,NSTimer还有一个对象方法,利用FireDate进行初始化,内容很简单无歧义,不再多说。

暂停

    NSTimer没有提供直接的暂停方法,我们只有自己想办法来间接实现暂停效果,这里采用的方法就是利用NSTimer的属性fireDate。fireDate的作用就是在指定的时间开启NSTimer。只要我们设置的开启时间够长,作用就相当于是暂停了。代码:
[_timer setFireDate:[NSDate distantFuture]];

继续

    NSTimer的继续原理和暂停是一样的,都是利用FireDate。代码:
[_timer setFireDate:[NSDate date]];

终结

    NSTimer的终结,系统给了方法代码:
[_timer invalidate];
    这样就实现了NSTimer的初始化、暂停、继续和终结功能,希望对读者有用。
1 0