属性修饰符总结 什么情况下该用什么

atomic:只能单线程进行访问和修改属性,性能低(默认)

nonatomic: 多线程进行访问和修改属性,性能高

copy:主要用在NSString类型,表示复制内容。一般用于NSString/block

setter:相关修饰符:assign | retain | copy  系统默认属性是assign。retain是指针的复制,copy是内容的复制

assign:用于非指针变量。用于基础数据类型(如NSInteger, CGFloat)和C数据类型(int, float, double, char等), 另外还有id类型,基本数据类型,结构体、枚举、(非oc对象);记住:前面不需要加*的就用assign

strong: 这个属性特质表示一种拥有的关系,一般用于除了NSString/block之外的oc对象

weak: 一般用于代理/UI控件,当两个对象相互引用(例如控件和控件的代理),一个用strong, 一个用weak,避免循环引用。

声明block对象时首先需要用copy修饰符,另一个需要注意的问题是关于线程安全,调用block时另一个线程有可能去修改block时需要使用atomic,如果确定不会发生则使用nonatomic

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,328评论 30 472
  • 1.属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作...
    曾令伟阅读 4,687评论 0 10
  • 一、深复制和浅复制的区别? 1、浅复制:只是复制了指向对象的指针,即两个指针指向同一块内存单元!而不复制指向对象的...
    iOS_Alex阅读 5,289评论 1 27
  • 青树qs阅读 1,001评论 0 3
  • 今天想讲两个人的故事,两个不同寻常的人。 尼克·胡哲,患有“海豹肢症”,天生没有四肢。不可思议的是﹕骑马、打鼓、游...
    鲁曼啊漫阅读 1,917评论 0 1