10-@property中strong和weak的使用

 

1、ARC 模式下 @property 参数的转变

(1)在之前手动管理内存学习中,我们用到以下用法:

    @property (nonatomic, retain) Person *person;

    @property (nonatomic, assign) int age;

  1> retain   :   release 旧值,retain新值(适用于OC对象类型)。

  2> assign : 直接赋值(默认,适用于非OC对象类型)。

(2)现在在ARC模式下:我们改用以下用法:

    @property (nonatomic, strong) Person *person;

     @property (nonatomic, weak) int age;

(3)先总结ARC特点,再作分析

  1> 不允许调用release、retain、retainCount、autorelease。

  2> 允许重写dealloc,但是不允许调用[super dealloc]。

  3> @property参数

    • strong : 成员变量是强指针(适用于OC对象类型)
    • weak   : 成员变量是弱指针,相当于(注:相当于并不代表二者完全相同)原来的assign(适用于OC对象类型)
    • assign:适用于非OC对象类型

  4> 以前(手动管理)的retain改为现在(ARC)用strong,其它不变   

2、@property中 strong 和 weak 的使用

(1)strong的使用

  @property (nonatomatic, strong) Dog *dog;

这句代码中:

  1> 使用强指针 strong 代替了手动管理中的 retain。

  2> strong 具有 retain 的所有功能。

  3> strong 可以将成员变量  _dog 变为强指针。

声明两个类:Person Dog

想让人拥有一条狗,可以这么写

在ARC模式下,只要有strong,成员变量就是强指针。

第1例:

第2例:

第3例:

第4例:

 

(2)weak的使用

  @property (nonatomatic, weak) Dog *dog;

这句代码中:

  1> 使用弱指针 weak 代替了手动管理中的 assign。

  2> weak 具有 assign 的所有功能。

  3> weak 可以将成员变量  _dog 变为弱指针。

posted @ 2014-10-07 10:08  微雨独行  阅读(320)  评论(0编辑  收藏  举报
1 2