zoukankan      html  css  js  c++  java
  • 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 变为弱指针。

  • 相关阅读:
    Android系统介绍与框架(转)
    6个值得推荐的Android开源框架简介(转)
    程序员最喜爱的12个Android应用开发框架二(转)
    android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
    Android数据缓存(转)
    [UI]实用案例--Shape绘制实用圆圈
    接口API测试和返回值JSON解析的插件
    Android LayoutInflater详解(转)
    一个json字符串
    Android中设定EditText的输入长度(转)
  • 原文地址:https://www.cnblogs.com/xdl745464047/p/4009034.html
Copyright © 2011-2022 走看看