面试准备第二篇

1:nil,NIL,NSNULL有什么区别?

nil,NIL可以说是等价的,都代表内存中一块空地址;NSNULL代表一个指向nil的对象

2:如何实现一个线程安全的NSMutableArray?

NSMutaleArray是线程不安全的,当有多个线程同时对数组进行操作的时候可能导致崩溃或数据错误

|线程锁:使用线程锁对数组读写时进行加锁

|派发队列:多用派发队列,少用同步锁中指出:使用“串行同步队列”(serial synchronization

queue),将读取操作及写入操作都安排在同一个队列里,即可保证数据同步。而通过并发队列,结合GCD的栅栏块(barrier)来不仅实现数据同步线程安全,还比串行同步队列方式更高效

3.atomic修饰的属性时绝对安全的吗?为什么?

不是,所谓的安全只是局限于Setter,Getter的访问器方法而言的,你对他做Release的操作是不会受影响的。这个时候就容易崩溃

你可能感兴趣的:(面试准备第二篇)