iOS开发 ☞ NSTimer

来源:互联网 发布:淘宝的促销大师怎么用 编辑:程序博客网 时间:2024/05/17 02:17

示例代码如下:

#import "ViewController.h"@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>@property (nonatomic, strong) UITableView *tableView;@property (nonatomic, strong) UILabel *label;@property (nonatomic, assign) NSTimeInterval timeCount;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    _timeCount = 0;    _tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];    _tableView.delegate = self;    _tableView.dataSource = self;    [self.view addSubview:_tableView];    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFunction) userInfo:nil repeats:YES];    _label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 40)];    _label.backgroundColor = [UIColor orangeColor];    [self.view addSubview:_label];}- (void)timerFunction {    _label.text = [NSString stringWithFormat:@"%f",_timeCount ++];}- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return 100;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    static NSString *cellID = @"cellID";    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];    if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];    }    cell.textLabel.text = [NSString stringWithFormat:@"%zd",indexPath.row];    return cell;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

当拖拽scrollView的时候,定时器会暂停,原因如下:
在主线程中,UITrackingRunLoopMode是优先级最高的模式,默认定时器的模式为NSDefaultRunLoopMode,在拖拽scrollView的时候,不会立即执行默认模式接收的事件。如果希望定时器持续计时,修改如下:

 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFunction) userInfo:nil repeats:YES];    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
0 0
原创粉丝点击