A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© amoshaxiangp 中级黑马   /  2015-11-11 02:56  /  718 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.快速初始化一个对象,并且加入自动释放池。
    1)自定义构造方法:1>先初始化父类,并判断是否初始化成功。2>初始化子类。3>返回self。

    2)定义类方法:
     代码:
{CSDN:CODE:1318059}
    注意!!!!!!!!!  此处若使用id类型,则NSstring * s= [Person initWithName:@"name"];  也可以编译成功,所以要使用instancetype ,可以帮助我们进行类型检测。

2.自动释放池的使用。
    1> autorelease方法:使用autorelease方法可以将对象加入到当前对象释放池中,在释放池释放的时候,对池中所有对象发送一次release消息。注意,无论在何处调用autorelease方法,都不会造成对象的释放,此处是释放池延缓了release消息的发送时间,对性能有影响。在可以确定对象释放准确时机的时候,尽量不要使用对象释放池。
    2>@autoreleasepool关键字:创建一个自动释放池。@autoreleasepool { } 定义的结构。
    3> 自动释放池的栈结构:与内存中的堆栈不同,此处指的是自动释放池的嵌套规则,是栈结构的。遵循先入后出原则,嵌套的时候,会按照先内后外的顺序去释放。
3.ARC介绍

    1>ARC是编译器特性,编译器在合适的地方加入release ,autorelease ,retain 。底层其实还是MRC。
    2>ARC判断原则:当一个对象没有强指针指向的时候,对象就会被释放。_ _weak   *p=[person new] 。此为创建一个弱指针。
    3>循环strong问题:与MRC中的循环retain问题一样,此时应该一个strong ,另外一个使用weak。
    4>MRC代码兼容ARC:-fno-objc-arc 不使用ARC,-f-objc-arc 使用ARC ,在ARC项目中可以使用MRC的类。
4.分类 Category
    1>分类的作用:将一个类的不同方法分到不同的文件中存储,便于对类进行模块化设计,以及团队合作开发。
                                 可以在不修改源文件的基础上,为这个类扩充一些方法。
                  注意:!!!   分类中只能增加方法,无法增加实例变量。          分类中可以访问原类的实例变量。
     2>主类,分类调用优先级的问题:主类,分类同时有一个同名方法时,优先调用分类的。当有多个文件含有同名方法时, 文件编译越晚,调用优先级越高。
     3> 非正式协议:给NSObject 类或者它的子类,也就是Foundation框架中提供的类增加的分类,就是非正式协议。
     4>延展,延展类别,扩展:
                                类扩展在新的 .h文件中,为原类,增加实例变量和方法,此处为相对私有变量,相对私有方法。只能在类的内部去调用。
                           注意:::类扩展的方法,无法被子类继承!!!!
                                类扩展与分类的区别:类扩展没有分类名称,所以也有人称之为:匿名分类。



1 个回复

倒序浏览
学习,学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马