• 内存管理总结


    一、计数器的基本操作

    1> retain : +1

    2> release : -1

    3> retainCount : 获得计数器

    二、set方法的内存管理

    1> set方法的实现

    (void)setCar:(Car *)car

    {

          if ( _car != car )

          {

              [_car release];

             _car = [car retain];

          }

    }

     

    2> dealloc方法的实现(不要直接调用dealloc

    (void)dealloc

    {

          [_car release];

          [super dealloc];

    }

     

    三、@property参数

    1> OC对象类型

    @property (nonatomic, retain) 类名 *属性名;

    @property (nonatomic, retain) Car *car;

    @property (nonatomic, retain) id car;

     

    // retain过的属性,必须在dealloc方法中release属性

    (void)dealloc

    {

          [_car release];

    [super dealloc];

    }

     

    2> OC对象类型(int float enum struct

    @property (nonatomic, assign) 类型名称 属性名;

    @property (nonatomic, assign) int age;

     

    四、autorelease

    1.系统自带的方法中,如果不包含allocnewcopy,那么这些方法返回的对象都是已经autorelease过的

    [NSString stringWithFormat: . . . .];

    [NSDate date];

     

    2.开发中经常写一些类方法快速创建一个autorelease的对象

    · 创建对象的时候不要直接使用类名,用self

     

    ARC的判断准则:只要没有强指针指向对象,就会释放对象

    1.ARC特点

    1> 不允许调用releaseretainretainCount

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

    3> @property的参数

      *  strong : 成员变量是强指针(适用于OC对象类型)

      *  weak : 成员变量是弱指针(适用于OC对象类型)

      *  assign : 适用于非OC对象类型

    4> 以前的retain改为用strong

     

    指针分2种:

    1> 强指针:默认情况下,所有的指针都是强指针 _strong

    2> 弱指针:_weak

     

    当两端循环引用的时候,解决方案:

    1>  ARC

    一端用strong,另一端用weak

    2>  ARC

    一端用retain,另一端用assign

  • 相关阅读:
    1822. Sign of the Product of an Array
    1828. Queries on Number of Points Inside a Circle
    1480. Running Sum of 1d Array
    C++字符串
    Git&GitHb学习记录
    54. Spiral Matrix
    104. Maximum Depth of Binary Tree
    110. Balanced Binary Tree
    136. Single Number
    19、泛型入门
  • 原文地址:https://www.cnblogs.com/pengyunjing/p/5901055.html
Copyright © 2020-2023  润新知