美文网首页iOS面试
iOS OC底层面试题(属性关键字)

iOS OC底层面试题(属性关键字)

作者: 程序员_秃头怪 | 来源:发表于2019-08-05 20:17 被阅读0次

属性关键字

1.读写权限:readonly,readwrite(默认)
2.原子性: atomic(默认),nonatomic。atomic读写线程安全,但效率低,而且不是绝对的安全,比如如果修饰的是数组,那么对数组的读写是安全的,但如果是操作数组进行添加移除其中对象的还,就不保证安全了。
3.引用计数:

  • retain/strong
  • assign:修饰基本数据类型,修饰对象类型时,不改变其引用计数,会产生悬垂指针,修饰的对象在被释放后,assign指针仍然指向原对象内存地址,如果使用assign指针继续访问原对象的话,就可能会导致内存泄漏或程序异常
  • weak:不改变被修饰对象的引用计数,所指对象在被释放后,weak指针会自动置为nil
  • copy:分为深拷贝和浅拷贝
    浅拷贝:对内存地址的复制,让目标对象指针和原对象指向同一片内存空间会增加引用计数
    深拷贝:对对象内容的复制,开辟新的内存空间

可变对象的copy和mutableCopy都是深拷贝
不可变对象的copy是浅拷贝,mutableCopy是深拷贝
copy方法返回的都是不可变对象

  • @property (nonatomic, copy) NSMutableArray * array;这样写有什么影响?
    因为copy方法返回的都是不可变对象,所以array对象实际上是不可变的,如果对其进行可变操作如添加移除对象,则会造成程序crash

面试题持续整理更新中,需要拿到第一手大厂面试题及答案文档可以添加 iOS进阶学习交流群:551346706 !结实人脉、讨论技术你想要的这里都有!

相关文章

网友评论

    本文标题:iOS OC底层面试题(属性关键字)

    本文链接:https://www.haomeiwen.com/subject/poevdctx.html