• iOS内存管理编程指南


    http://blog.csdn.net/lifengzhong/article/details/7739496

    基本数据类型是值类型的,存储在堆栈上,由编译器分配和回收,程序员只需要声明就可以立即使用。NSObject对象及其子类是引用类型的,存储在堆上,由程序员负责分配和回收。对象在用完后应立即释放;在有些情况下,对象分配和初始化后被传递到另一方法,此时,程序员对该对象不再具有控制权,可以调用对象的autorelease方法把对象丢到自动回收池,自动回收池对象效率较低。如果你对一个对象有所有权,那么你就要负责其回收的工作,否则,你不需要,也不能取回收你不拥有的对象。

    1:所有使用alloc, new, copy或mutabelCopy,以及这些关键词开头的函数返回的对象,你都是拥有所有权的,也就是要负责这些对象的内存回收工作。这是iOS开发中的一种约定,所以,当你编写自己的alloc, new或copy类型的函数时,也请遵循这样的命名规范。

    2:retain返回的对象,拥有所有权。例如显示调用retain函数返回的结果,或者synthesize 的retain类型的成员变量。 3:所有使用其他函数返回的对象,没有所有权。

    4:返回的对象的引用,没有所有权。

    5:autorelease返回的对象没有所有权。

    在使用完方法内声明和分配的对象后,程序员无需做任何事以释放对象,CPU指令离开该方法后,方法内定义分配的对象自动释放。实例变量/属性则不同,在某方法内,如果我们已确定不再需要某实例变量/属性了,可以为对象设置nil值,以确保CPU指令离开该类型实例后,类实例变量/属性所占用的资源被正确释放。一般在viewDidUnload函数里设置实例变量/属性为nil。

  • 相关阅读:
    用错每日活跃用户(DAU)这个指标,无异于挖坑给自己跳
    自我修复型设计-常用的架构设计原则
    UParams
    nodejs的使用场景
    问题
    GitHub Copilot可对整行或全部代码给出AI分析建
    Your AI pair programmer
    飞冰React框架如何配置懒加载
    【630】keras 实现多输出模型
    【629】图像增强(imgaug 包)
  • 原文地址:https://www.cnblogs.com/hjyxbfz/p/2978350.html
Copyright © 2020-2023  润新知