那一天的面试

昨天参加了一个面试,一个面试老哥给了一个问题,大概是这样的

-viewdidLoad {

nslog(@"111");

dispatch_async(que,^{

执行一个timer,timer执行的方法打印 nslog(@"222");

})

nslog(@"333");

}

问打印顺序,然后我就问队列是串行(这里应该说清楚是用获取主队列的串行,还在自己创建的队列串行)还是并发(并发就问就没没意思)。我当时知道他是想问子线程的timer运行问题,与RunLoop有关,子线程的RunLoop没有获取当前的loop,是不会创建的。所以这里又考虑到dispatch_async是否具有开启子线程的能力,毕竟是异步,但这里要说多一点,如果是在主队列下异步线程并不会开启新的线程,测试打印如下


那一天的面试_第1张图片
主队列串行异步的打印结果

如果是自己的写的串行或者并发队列是具有开启子线程的能力,这时候222就不会打印,在主队列的情况下,然后打印333,222。

还有[ASArry mutableCopy]返回的就是一个可变的对象!!!!也和前面接的对象有关系!!!!

希望大兄弟能看到!所以面试官的答案也不定是对的

你可能感兴趣的:(那一天的面试)