property attribute: assign, strong, weak, unsafe_unretain and copy

Posted Gabriel_Lee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了property attribute: assign, strong, weak, unsafe_unretain and copy相关的知识,希望对你有一定的参考价值。

assign:用于“纯量类型”(如CGFloat 或 NSInteger等);

strong:用于“对象类型”,定义了一种“拥有关系”(owning relationship),为这种属性设置新值时,设置方法会先保留新值,并释放旧值,然后再将新值设置上去;

weak:用于“对象类型”,定义了一种“非拥有关系”(nonowning relationship),为这种属性设置新值时,设置方法既不保留新值,也不释放旧值,相当于用另一个属性指向原来的对象,关键在于当属性所指的对象被释放时,该属性值也会清空;

unsafe_unretained:语义和assign相同,但用于“对象类型”,定义了一种“非拥有关系”("不保留",unretained),与weak的区别在于,当目标对象被释放时,属性值不会自动清空("不安全",unsafe);

copy:与strong类似,但其设置方法并不保留新值,而是将其“拷贝”(copy)。

 

以上是关于property attribute: assign, strong, weak, unsafe_unretain and copy的主要内容,如果未能解决你的问题,请参考以下文章

C#中的Attribute Property区别

Dom元素的Property和Attribute

JavaScript 中 Property 和 Attribute 的区别详解

attribute与property

javascript中attribute和property的区别详解

attribute和property在英语里有啥区别