面试之我见

来源:互联网 发布:淘宝双11整点抢购技巧 编辑:程序博客网 时间:2024/06/06 03:31


这两天去面试,遇到了好多基础题却答不上来,可能由于紧张脑子短路考虑不周,事后回忆大致都能想起来,看来能神情自若的表达真是太重要了。这方面我要多加强。

1.atomic和nonatomic的区别

——具备atomic特质的获取方法会通过锁定机制来确保其操作的原子性
也就是说,如果两个线程同时读取一个属性,那么不论何时,总能看到有效的属性值。
如果不加锁的话(或者说使用nonatomic语义),那么当其中一个线程正在改写某属性值的时候,另外一个线程也许会突然闯入,把尚未修改好的属性值读取出来。发证这种情况时,线程读取道德属性值肯能不对。

一般iOS程序中,所有属性都声明为nonatomic。这样做的原因是:
在iOS中使用同步锁的开销比较大, 这会带来性能问题。一般情况下并不要求属性必须是“原子的”,因为这并不能保证“线程安全”(thread safety),若要实现“线程安全”的操作,还需采用更为深层的锁定机制才行。

2.不要使用    dispatch_get_current_queue()

《编写高质量iOS与OS X代码的52个有效方法》之46条,(入手的书没看到怨不得别人!)

0 0