首页 > 代码库 > 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基础复习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。