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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 奔跑的蚂蚁iOS 初级黑马   /  2016-2-20 18:26  /  600 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

6.@property的参数:
    atomic(额拖米可):         原子性,安全,但速度较慢,默认是这个
    nonatomic(nang额拖米可):  非原子性,速度快,但是安全性较差.一般iOS中用这个
    assign(额塞恩):           MRC中给给对象实例变量赋值,或者给基本数据类型赋值(ARC)中也用这个
    retain(瑞疼):             MRC中给对象实例赋值.新值与原值不相同,先release原值,再赋新值,并retain新值,如相同则什么都不做
    strong:                  ARC下表示用强指针指向该对象
    weak:                    ARC下表示用弱指针指向该对象
    copy:                    用于NSString和block类型,复制一个新副本
    "setter:" = "xxx:"       将setter方法重命名为"xxx:",   注意':'
    "getter" = "xxx"         将getter方法重命名为"xxx"


7."retain"和"copy"的区别
    //  这是框架后面的内容
    retain并没有创建新的对象,只是拷贝原对象的地址,并让其引用计数+1
    copy是创建了一个新的副本对象,对象的引用计数为1.Oc



8.@class的作用以及与#import的区别
    告诉编译器这是一个类,而要编译器不用去关心类的实际内容.在需要使用类时,在.m文件中再导入该类的头文件

    与#import的区别:
    #import实际相当于内容的复制.当一个头文件被多个类引用时,如果其内容被修改,则所有引用该.h文件的类都需要重新编译,效率低.并且当两个类有相互引用时,使用#import会报错
    @class只是声明类,而不会去关心类的内容,只有在使用时才在.m中导入该类.h文件.当.h文件被修改时,不需要重新编译,大大提高效率.并且@class可以防止重复引用的问题


9.autorelease自动释放
    作用:在@autoreleasepool结束时或者被手动释放时,会对池中所有"加入了该池"的对象进行一次release操作,可以不再关心release的调用时间,也不需要再关心对象释放的时间
    "autorelease与release的区别":       "重要"
        release是立即执行对象的retainCount-1操作,而autorelease是让对象加入自动释放池,并不立即执行计数器-1操作,在自动释放池结束时再执行release操作,相当于release操作的延迟


10.autorelease使用的注意
    1.只有在池内调用autorelease方法才加入自动释放池: [obj autorelease]
    2.每调用一次autorelease操作,自动释放池结束时会执行一次release操作,所以不要多次调用
    3.自动释放池是释放的延迟,不要在池内创建过多的对象,也不要对占用内存大的对象使用autorelease
    4.自动释放池嵌套:栈顶层池中的对象最先释放

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马