开发-收藏iOS Developer将来跳槽用

【iOS内存】内存管理基本概念和原理

2016-07-06  本文已影响65人  24c41111e47b

本文主在记录内存管理方面的关键概念,文中涉及均查自网络资料,如有不对的地方,欢迎指正!
环境:iOS Xcode


内存管理的四条规则

OC对象的动作 OC对象的方法 retainCount
1.创建1个对象并获取它的所有权 alloc/new/copy/mutableCopy RC=1
2.获取对象所有权 retain RC+1
3.放弃对象所有权 release RC-1
4.释放对象 dealloc RC=0(此时自动调用dealloc)

所有权修饰符

__strong

注:释放对象,即dealloc,当该对象的RC=0时,系统将来某个时刻(自动释放池触发时)自动调用对象所属类的dealloc方法。

__weak

注:针对循环引用问题可以使用__weak解决

__unsafe_unretained 或 assign

注:对象释放后,使用__unsafe_unretained修饰的变量,指针不自动置为nil,此时再访问该对象,该对象已经不存在会造成非法访问(Invalid Access),即:野指针崩溃。

__autoreleasing

属性修饰词

ARC下属性修饰词和所有权修饰符对应关系如下:

属性修饰词(property modifer) 所有权修饰符(owership qualifer)
strong __strong
retain __strong
copy __strong
weak __weak
assign __unsafe_unretained
unsafe_unretained __unsafe_unretained
上一篇下一篇

猜你喜欢

热点阅读