property属性

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

声明如下

@property(nonatomic) int num;

调用方式

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

在property声明时会有多种选择

  1. 读写属性readwrite | readonly

    readwrite:可读可写

    readonly:只读

    系统默认使用readwrite

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

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

    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方法名。

1、2、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和其子类


你可能感兴趣的:(property属性)