Timer计时会被scrolView的滑动影响的问题可以通过将timer添加到NSRunLoopCommonModes来解决
NSTimer *timer = [NSTimer timerWithTimerInterval:1.0] target:self selector:@selector(timerTick:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommomModes];主线程的run loop是默认启动的,其他线程默认不启动
NSRunloop 不是线程安全的,CFRunLoopRef是线程安全的
我们不能再一个线程中去操作另外一个线程的run loop对象,那很可能会造成意想不到的后果。不过幸运的是CoreFundation中的不透明类CFRunLoopRef是线程安全的,而且两种类型的run loop完全可以混合使用。Cocoa中的NSRunLoop类可以通过实例方法:
-(CFRunLoopRef)getCFRunLoop;
4.当在其他线程上面执行selector时,目标线程须有一个活动的run loop。对于你创建的线程,这意味着线程在你显式的启动run loop之前是不会执行selector方法的,而是一直处于休眠状态。
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)argwaitUntilDone:(BOOL)wait modes:(NSArray *)array;