- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// 初始化一个定时器
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerChange:) userInfo:nil repeats:YES];
//定时器立即执行(如果希望定时器方法先调用一次,可以调用fire方法)
//[timer fire];
if 0
NSTimer *timer;
//使定时器销毁(失效i)
[timer invalidate];
endif
if 0
//定时器会执行的(过去的时间)(执行)
timer.fireDate = [NSDate distantPast];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//4秒后修改执行时间(暂停)
timer.fireDate = [NSDate distantFuture];
});
endif
**/*
NSRunloop:消息循环机制
主线程中的mode(模式)有两种:
1.NSDefaultRunLoopMode(一般默认)
2.UITrackingRunLoopMode
*/**
if 0
**NSTimer在启动的时候默认是NSDefaultRunLoopMode
滚动视图在滚动的时候主线程处于UITrackingRunLoopMode
NSRunLoopCommonModes一组通用的配置模式**
endif
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
scrollView.backgroundColor = [UIColor lightGrayColor];
scrollView.contentSize = CGSizeMake(2000, scrollView.frame.size.height);
[self.view addSubview:scrollView];
//获取当前runloop,并且修改定时器模式
[[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
// [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; // 这种也可以
}
- (void)timerChange:(NSTimer *)timer
{
if 0
id userInfo = timer.userInfo;
NSLog(@"%@",userInfo);
endif
NSLog(@"%ld",_count++);
}