上周在自己硬编码实现应用启动动画的的时候在网上找了这么一个方法可以使程序暂停一段时间然后再执行某方法,个人感觉这个函数真的很酷。

    方法的求签名如下:

     - (void)performSelector:(SEL)aSelector withObject:(nullable id)anArgument afterDelay:(NSTimeInterval)delay;
    如网上所言,该方法是单线程的,也就是说只有当调用此方法的函数执行完毕之后,selector方法才会被调用。
    我写了一个方法如下:
     
    @implementation LaunchViewController
    
    -(void)viewDidLoad{   
        [self performSelector:@selector(goToPage) withObject:nil afterDelay:1.0f];
         NSLog(@"do finish");
    }
    
    -(void)goToPage{
        NSLog(@"goToPage");
        GuideViewController *guideView=[[GuideViewController alloc]init];
        [self presentViewController:guideView animated:NO completion:nil];
    }
    @end
    
    嗯,打印的结果是:
     2015-11-30 10:58:22.951 HelloWorld[1559:320258] do finish
    2015-11-30 10:58:23.953 HelloWorld[1559:320258] goToPage
     
    然后接下来会研究一下它的内部的执行机制。
    performSelectorInBackground
    performSelectorOnMainThread
    这两个方法有时间还需要再了解一下