zoukankan      html  css  js  c++  java
  • 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中每个函数外部都有一个自动释放池
    本文版权归孤独的根号下三和博客园共有,欢迎转载请注明出处(出处: http://www.cnblogs.com/liudongyan/),但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    BZOJ1077 并查集
    linux(fedora) 第三课
    hdu 4513 吉哥系列故事——完美队形II(manacher)
    hdu 3294 Girls' research(manacher)
    FZU
    蓝桥杯试题 k倍区间(dp)
    蓝桥杯 带分数(全排列+枚举)
    天梯赛 L2-001 紧急救援
    蓝桥杯[2017年第八届真题]分考场 (图着色问题)
    hdu 3068 最长回文(manacher)
  • 原文地址:https://www.cnblogs.com/liudongyan/p/4158416.html
Copyright © 2011-2022 走看看