美文网首页
@property属性

@property属性

作者: leojr | 来源:发表于2016-08-15 12:02 被阅读0次

1、assign :简单赋值,不更改索引计数

2、retain:与strong相对应,使用了引用计数+1

3、copy:用于非共享内存时,每个指针有自己的内存空间


4、atomic://默认属性

A,当一个变量声明为atomic时,意味着在多线程中只能有一个线程能对它进行访问

B,当一个变量声明为atomic时,该变量为线程安全型,但是会影响访问速度,

C,当一个变量声明为atomic时,在非ARC编译环境下,需要设置访问锁来保证对该变量进行正确的get/set

5、nonatomic:

A,    当一个变量声明为nonatomic时,意味着多个线程可以同时对其进行访问

B,    当一个变量声明为nonatomic时,它是非线程安全型,访问速度快;

C,    当一个变量声明为nonatomic时,当两个不同的线程对其访问时,容易失控。

总结:atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下面这样:

if (property != newValue) {

[property release];

property = [newValue retain];

}


6、strong://ARC中默认属性,等于非ARC中的retain

7、weak:与assign 相对应

8、readonly:只有get方法,没有set方法

9、readwrite://默认属性

10、unsafe_unretained:用在ARC编译环境下,在此环境下,与assign相似。它只是告诉ARC如何正确地调用声明为unsafe_unretained变量的retain和release

相关文章

网友评论

      本文标题:@property属性

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