在.h文件中声明@property可用于替代声明实例变量。他能够在运行时生成get set方法。安全
声明以下
性能
@property(nonatomic) int num;
调用方式atom
类名.num = 10; int n = 类名.num;
在property声明时会有多种选择线程
读写属性readwrite | readonly指针
readwrite:可读可写code
readonly:只读对象
系统默认使用readwrite
内存
setter相关修饰符:assign| retain | copyget
assign:表示直接赋值,这个修饰符不会牵涉到内存管理,若是对象类型使用此修饰符可能引起内存溢出it
retain:针对对象类型进行内存管理,若是对基本数据类型使用会报错。当给对象类型使用此修饰符时,setter方法会将旧对象属性releaase,再对新对象进行一次赋值并retain。
copy:主要用在NSString类型表示复制内容。
系统默认是assign
retain是指针的复制不从新分配内存空间,copy是内容的复制
原子性修饰符:atomic | nonatomic
atomic:表示线程安全。
nonatomic:表示非线程安全,使用此属性性能会提升一点。
系统默认使用nonatomic
getter和setter修饰符
@property(getter = getName , setter = setName) Object *obj;
这两个修饰符用于自定义getter setter方法名。
一、二、3组只能出现一个4则能够同时使用
Xcode4.2(iOS sdk4.3和如下版本)和之前的版本用retain和assign
Xcode4.3(iOS 5和以上版本)或以后有了ARC用strong和weak
前面不须要加*的就用assign
strong相似于retain,weak相似于assign
使用assig:对基础数据类型(如NSInteger, CGFloat)和C数据类型(int, float, double, char等), 另外还有id类型
使用copy:对NSString类型
使用retain:对其它NSObject和其子类