首页 > 代码库 > 2014.12.11 oc基础复习

2014.12.11 oc基础复习

这一天主要学习了内存管理的部分,感觉稍显复杂,但只要遵循总的原则就不会错

谁声明,谁销毁,谁retain,谁release

1.在类的成员变量是oc对象时,set方法需要写内存管理如

-(void)setBook:(Book *)book{

    if( _book != book){

        [_book release];

        _book = [book retain];

     }

还要在调用这个set方法的类的dealloc方法中,加入[_book release]

在声明该对象成员变量的属性时,加入retain关键字,就可以代替上述内容

@propety 还有readonly,readwrite,assgin,retain,copy,atomic,nonatomic等关键字

atomic是原子性,即给该方法加上线程锁,在一个线程尚未执行完毕时不允许另外一个线程调用,耗费了系统安全,nonatomic即禁止了多线程

2.@class关键字 在对象与对象相互引用成员变量时使用,代替引入.h文件,提高了编译效率

3.autorelease延迟释放,使用autorelease声明时,会把该变量加入autoreleasepool的栈顶,等该池释放的时候,pool的所有变量都调用一次release方法,一般静态方法声明的变量都是autorelease,循环量比较大的语句不要加入autoreleasepool,而且在arc中模式中不能使用autorelease方法


2014.12.11 oc基础复习