property属性

在.h文件中声明@property可用于替代声明实例变量。他能够在运行时生成get set方法。安全

声明以下
性能

@property(nonatomic) int num;

调用方式atom

类名.num = 10;
int n = 类名.num;

在property声明时会有多种选择线程

  1. 读写属性readwrite | readonly指针

    readwrite:可读可写code

    readonly:只读对象

    系统默认使用readwrite
    内存

  2. setter相关修饰符:assign| retain | copyget

    assign:表示直接赋值,这个修饰符不会牵涉到内存管理,若是对象类型使用此修饰符可能引起内存溢出it

    retain:针对对象类型进行内存管理,若是对基本数据类型使用会报错。当给对象类型使用此修饰符时,setter方法会将旧对象属性releaase,再对新对象进行一次赋值并retain。

    copy:主要用在NSString类型表示复制内容。

    系统默认是assign

    retain是指针的复制不从新分配内存空间,copy是内容的复制

  3. 原子性修饰符:atomic | nonatomic

    atomic:表示线程安全。

    nonatomic:表示非线程安全,使用此属性性能会提升一点。

    系统默认使用nonatomic

  4. 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和其子类

相关文章
相关标签/搜索