ios RunLoop笔记

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

  2. 主线程的run loop是默认启动的,其他线程默认不启动

  3. 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;

你可能感兴趣的:(ios RunLoop笔记)