iOS基础知识之属性及属性关键字

Posted bky2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS基础知识之属性及属性关键字相关的知识,希望对你有一定的参考价值。

ios属性及属性关键字


一、属性功能:
1.给现有的成员变量生成一对setter/getter方法。
2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的)。


二、属性关键字:
assign 默认(缺省)关键字,基本数据类型的赋值。
MRC:手动管理内存
retain 对象的属性声明,保存引用计数,如果别的对象使用当前对象,则该对象的计数器加1,即两个对象同时指向同一块内存。
copy 对象的属性声明,直接拷贝对象为一个新的副本,而被拷贝的对象的计数器不会加1,即两个对象分别指向不同的内存,只是内存中的数据相同。

 

ARC:自动管理内存
strong 强指针,增加一个对象的引用权限(引用计数加1)
weak 弱指针,不会增加对象的引用权限,不会影响对象是否释放。
strong和weak 应用在对象类型的属性里面
ARC下可以使用retain,copy。

 

线程相关
nonatomic 单线程的程序的属性声明,缺省关键字,单线程下使用,执行效率高。
atomic 多线程的程序的属性声明,并不建议使用atomic来处理线程安全,执行效率低。

 

属性读取权限的关键字
readwrite 生成getter和setter方法,缺省权限
readonly 只生成getter方法,即只能访问,不能赋值。


三、属性关键字的使用:

非对象类型 使用assign可省略
对象类型 使用retain/strong
NSString 使用copy/strong

 例如:

1 @property (nonatomic, assign) CGFloat duration;
2 @property (nonatomic, strong) GLProgram *program;
3 @property (nonatomic, copy) NSString *dirPath;

 

 

 




















以上是关于iOS基础知识之属性及属性关键字的主要内容,如果未能解决你的问题,请参考以下文章

iOS 内存管理之属性关键字

JAVA基础之Static

php静态属性

知识总结之form表单属性及H5新增特性

vue2.0之监听属性的使用心得及搭配计算属性的使用

java基础面向对象之this关键字