NSTimer的简单使用

1。NSTimer:在将来的某一时刻开始一次性执行或是周期性执行指定的方法

方法:+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector 

             userInfo:(id)userInfo repeats:(BOOL)repeats

e.g.

@property (nonatomic, strong) NSTimer *paintingTimer;

- (void) paint:(NSTimer *)paramTimer{

    /* Do something here */

    NSLog(@"Painting");

}

- (void) startPainting{

    self.paintingTimer = [NSTimer  scheduledTimerWithTimeInterval:1.0

                          target:self

                          selector:@selector(paint:)

                          userInfo:nil

                          repeats:YES]; 

    //若repeats是NO,必须加入循环,才能启动一次,否则无效。(若是YES,则在NSTimer生成时,会自动加入默认的循环)

    [[NSRunLoop currentRunLoop] addTimer:self.paintingTimer

                                 forMode:NSDefaultRunLoopMode];

   

}

- (void) stopPainting{

    if (self.paintingTimer != nil){

        [self.paintingTimer invalidate];

    }

}

方法:+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds invocation:(NSInvocation *)invocation repeats:(BOOL)repeats

e.g.

- (void) startPainting{

    SEL selectorToCall = @selector(paint:);

    NSMethodSignature *methodSignature = [[self class] instanceMethodSignatureForSelector:selectorToCall];

    NSInvocation *invocation =  [NSInvocation invocationWithMethodSignature:methodSignature];

    [invocation setTarget:self];

    [invocation setSelector:selectorToCall];

    

    /* Start a scheduled timer now */

    self.paintingTimer = [NSTimer scheduledTimerWithTimeInterval:1.0

                                                      invocation:invocation

                                                         repeats:YES];

    //若repeats是NO,必须加入循环,才能启动一次,否则无效。(若是YES,则在NSTimer生成时,会自动加入默认的循环)

    [[NSRunLoop currentRunLoop] addTimer:self.paintingTimer

                                 forMode:NSDefaultRunLoopMode];


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值