zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    poj 1080 dp
    Codeforces Round #280 (Div. 2)
    Codeforces Round #279 (Div. 2)f
    Codeforces Round #278 (Div. 1)
    Codeforces Round #276 (Div. 1)
    搜索
    debug 心得
    ZOJ 1633
    DRF 一对多序列化与反序列化
    HTTP协议
  • 原文地址:https://www.cnblogs.com/hjyxbfz/p/2978350.html
Copyright © 2011-2022 走看看