第十讲.内存管理高级(属性内部实现原理,遍历构造器的内存管理,dealloc销毁内存的方法,多态)

 

1、属性的内部实现原理
    1.assign属性的语义特性及使用范围
 
Person.h 文件
 
 
 
assign的内部实现(会出面试题)
 
 
 
//在内存被系统回收以后,还在使用,容易产生野指针问题(例子以下)。
//assign适合基本数据类型,基本数据类型不会引发内存问题。
 
 
 
 
     2.retain属性的使用
 
retain属性的实现细节
 
在调用过程当中想清楚过程
 
注意:(实现的过程)
 
 
   3.copy属性的使用
copy适用于接受了NSCopying协议的对象,由于只有接受了NSCopying协议,对象才能执行copy操做
 
copy的实现细节(注意里面对于内存的管理)
 
 
用内存管理的方式解析copy
 
 
注意:思路详解
 
 
2、dealloc内释放实例变量
    1. 什么是dealloc?
      dealloc是NSObject的一个实例方法,与alloc对应用于回收开辟的内存空间
      这个方法在对象引用计数为0时,由系统自动调用
      一般咱们在dealloc中释放类的实例变量
    2. 如何使用dealloc?

      // Person.m面试

      - (void)deallocspa

      {3d

          [_name release]; // 释放setter方法泄露的指针

          [super dealloc];orm

      }对象

    3. dealloc注意事项:
      永远不要手动调用dealloc
      在dealloc方法的最后一行,必需要写[super dealloc];
 
 
3、便利构造器方法的实现原理
 
   // 遍历构造器在使用的过程当中要注意对内存的管理
   //遍历构造器的格式注意,同时在使用时要与初始化配合使用
 
 
return [p autorelease];是最完美的解决方案,既不会内存泄露,也不会产生野指针
 
 
注意:在遍历构造器的内部已经用autorelease进行了内存的释放管理,因此再使用release进行释放,会引发过分释放问题
 
 
4、collection的内存管理
      1>.collection:collection就是NSArray,NSDictionary,NSSet...等容器类
                 collection会自主管理本身内部的元素

      2>.加入collection中的对象会被retain继承

      3>.移除出collection的对象会被release接口

      4>.collection被释放会对内部全部对象release内存

 

五.多态it

    1>.多态的含义:早上我和同事说口渴,想喝水。结果:A同事拿着个人杯子去给我接了一杯水。B同事顺手在饮水机上拿了一次性纸杯给我接了杯水。C同事给了我一瓶他早上刚买的饮料。同事获得的是一样地请求,可是三我的都有各自的解决办法,这就是多态。
多态就是不一样对象在响应同一个请求时候不一样的实现。父类指针能够指向子类对象。

  2>.多态的特色:

       a. 父类指针能够指向不一样的子类对象
       b. 容许在多个类中定义同一个消息接口
       c. 能够屏蔽不一样的子类之间的差别,能够通用代码
       d. 适应需求的不一样变化

 

实例分析:

定义Animal类,和它的子类,Cat、Dog类:

Animal.h文件

 

 Animal.m文件

 

 cat.h文件(继承于Animal)

 cat.m文件

 

 

dog.h文件(继承于Animal)

 

 

dag.m文件

 

 

main.m文件(父类的同一方法,父类和多个子类能够同时响应,这就是多态)

 

相关文章
相关标签/搜索