1.这个写法会出什么问题:@property(copy)NSMutableArray *array?
参考答案:
首先是没有指明为nonatomic,因此就是atomic 原子操作,会影响性能。该属性使用了同步锁,会在创建时生成一些额外的代码用于帮助编写多线程程序,这会带来性能问题,通过声明nonatomic 可以节省这些虽然很小但是不必要的额外开销。在我们的应用程序中,几乎都是使用nonatomic 来声明的,因为使用atomic 并不能保证绝对的线程安全,对于要绝对保证线程安全的操作,还需要用更高级的方式来处理,比如NSSpinLock、@syncornized 等。
其次是因为使用的是copy,所以实际得到的是NSArray类型,它是不可变的,如果在使用中使用了增、删、改操作,则会crash。
@property面试整理
最新推荐文章于 2021-03-25 10:41:37 发布