OC语法7——内存管理之@property参数

@property的参数:

  我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法。

  但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们遵循“谁创建,谁释放”的原则管理内存。

  所以我们得重写set方法:把原先的成员变量(对象)release掉,然后给新成员变量retain。

  还得重写realloc方法:在realloc中调用release,释放该对象。

  呵呵。我们引入@property的目的就是为了让其自动生成set和get方法的,现在又得我们重写set方法,所以我们必须有新的解决方案。

  其实OC引入@property的关键字是允许添加参数的。总共有3个类型的参数。当我们不写参数时它默认是:

@property (atomic,readwrite,assign) Book *book;

atomic的意思是:多线程下安全;

readwrite:既可读取值,又可赋值(生成set和get方法);

assign: 不进行内存管理,直接给属性赋值。

@property的参数总共有3种类型,下表是全部的参数解释:

OC语法7——内存管理之@property参数

在没有多线程的问题时,我们选nonatomic参数,它运行速度比较快。

因为我们要进行内存管理,所以得写retain参数。它先会对原先的对象release,再给新对象retain。这样,便可以取代手动重写set方法这种体力劳动了!

@property (nonatomic,retain) Book *book;

assign,retain,copy三个参数的功能:

OC语法7——内存管理之@property参数

上一篇:vs2010编译error_code


下一篇:【java】重写方法的一些注意点