OC学习(3)-属性

Attribute Description
getter= Use a custom name for the getter method.
setter= Use a custom name for the setter method.
readonly Don’t synthesize a setter method.
nonatomic Don’t guarantee the integrity of accessors in a multi-threaded environment. This is more efficient than the default atomic behavior.
strong Create an owning relationship between the property and the assigned value. This is the default for object properties.
weak Create a non-owning relationship between the property and the assigned value. Use this to prevent retain cycles.
copy Create a copy of the assigned value instead of referencing the existing instance.

不同关键字的使用场景

  • 使用assign:对基础数据类型(NSInteger)和C数据类型(int,float,double,char等)
  • 使用copy:对NSString
  • 使用retain:对其他NSObject和其子类
  • 使用weak:其和assign差不多,但是它多了一点,就是,它会自动对该类型变量设置为nil

assign: 简单赋值,不更改索引计数(Reference Counting)。
copy: 建立一个索引计数为1的对象,然后释放旧对象
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1

weak 和strong的区别

(weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。
一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。

例子
想象我们的对象是一条狗,狗想要跑掉(被释放)。
strong型指针就像是栓住的狗。只要你用牵绳挂住狗,狗就不会跑掉。如果有5个人牵着一条狗(5个strong型指针指向1个对象),除非5个牵绳都脱落 ,否着狗是不会跑掉的。
weak型指针就像是一个小孩指着狗喊到:“看!一只狗在那” 只要狗一直被栓着,小孩就能看到狗,(weak指针)会一直指向它。只要狗的牵绳脱落,狗就会跑掉,不管有多少小孩在看着它。
只要最后一个strong型指针不再指向对象,那么对象就会被释放,同时所有的weak型指针都将会被清除。

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

推荐阅读更多精彩内容

  • 在学iOS中遇到的一些语言区别 1.OC语言的和基本特点 OC语言是C语言的一个超集,只是在C的基础上加上了面向对...
    niceSYT阅读 1,027评论 0 3
  • 1.1 什么是自动引用计数 概念:在 LLVM 编译器中设置 ARC(Automaitc Reference Co...
    __silhouette阅读 5,271评论 1 17
  • 307、setValue:forKey和setObject:forKey的区别是什么? 答:1, setObjec...
    AlanGe阅读 1,593评论 0 1
  • 盛是清欢无阻碍 凌冽芳云碧天海 名义飘荡虚翘楚 乱石穿空以无奈
    尚酷阅读 246评论 2 11
  • 25岁结婚这是一个伪命题。年龄不该成为婚姻的枷锁,没有合适结婚的年龄,只有合适结婚的人。 前几日,我和妈妈进行了一...
    晓越明阅读 610评论 6 7