NSTimer的简单使用

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 15:22   18   0

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];


}



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP