首页 > 代码库 > OC内存管理
OC内存管理
1.指针转移 要释放
2.nil可以调用retain或者release,什么都不做
当复制前后是有一个对象,假如刚好引用计数为1,
3.数组乃至其他数据结构,会对添加进来的元素进行retain
数组或数据结构释放,会对每个元素释放一次
从可变数据结构中移除对象会对对象realse
3.@property 如果是一般对象用retain, 字符串用copy
copy是创建一个新的对象。
retain是用一个对象
copy复制的对象不可修改,mutable copy复制的对象可以修改
只有实现了NSCoding或者NSCopy和NSMutableCopy协议的对象才能copy或者mutable copy
,实际工作中copy、mutablecopy只用于copy字符串
4.autorelease(延迟释放)需要配合autoreleasepool使用,和realse一样,将计数器减一,但是要在自动释放池释放后才生效,要遵循内存管理黄金法则。能不用就不用。在IOS程序中,每个触发周期或者一个轮询周期都会创建并释放一个自动释放池。类方法创建对象需要使用autorelease(已经自动封装)
5.return [dog autorelease];//保证在一个函数中不消失
6.返回一个对象 return [[_name retain] autorelease];//保证对象再返回一段时间内仍然存在
7.自动释放池 oc中只有写了才存在,ios中每个函数外部都有一个自动释放池
OC内存管理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。