内存管理的思考模式

自己生成的对象,自己所持有

使用以下名称开头的方法名意味着自己生成的对象只有自己持有

  • alloc
  • new
  • copy
  • mutableCopy

下列名称也意味着自己生成并持有对象

  • allocMyObject
  • newThisObject
  • copyThis
  • mutableCopyYourObject

但是对于以下方法名称,即使用alloc/new/copy/mutableCopy名称开头,并不属于同一类别的方法

  • allocate
  • newer
  • copying
  • mutableCopyed

非自己生成的对象,自己也能持有

/*

取得非自己生成并持有的对象

*/

id obj = [NSMutableArray array];

/*

取得的对象存在,但自己并不持有

*/

[obj retain]

/*

自己持有对象

*/

不再需要自己持有的对象时释放

自己生成并持有对象,可通过一下方法实现

-(id)allocObject//要符合驼峰命名法

{

id obj = [[NSObject alloc]init];

return obj;

}

那么[NSMutableArray array]方法使取得的对象存在,但自己不持有对象,又是如何实现的呢

-(id)object{

id obj = [[NSObject alloc]init];

[obj autorelease];

return obj;

}

autorelease使对象在超出指定的生存范围时能够自动并正确的释放。

无法释放非自己持有的对象

释放非自己持有的对象会导致程序崩溃

时间: 2024-10-30 18:34:26

内存管理的思考模式的相关文章

关于Qt半自动内存管理的思考及实验

一时兴起,对Qt感了兴趣,决心想要研究一下. 按网上资料配好环境,Windows 7 64bit + Qt 5.3.1 + VS2010. 根据<C++ GUI Qt4 编程>这本书,写出了第一个程序HelloQt,程序如下: #include <QApplication> #include <QLabel> #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #endif

内存管理的思考方式2(ARC下)

所有权修饰符 所有权修饰符共有四种 __strong __weak __unsafe_unretained __sutoreleasing __strong修饰符 是id类型和对象类型默认的所有权修饰符,通过__strong修饰符,不必再次键入retain或者release,完美的满足了'引用计数式内存管理的思考方式': 自己生成的对象自己持有 非自己生成的对象,自己也可以持有 不再需要自己持有的对象时释放 非自己持有的对象无法释放 前两项只需通过对带__strong修饰符的变量赋值即可达成.通

内存管理:用户模式和内核模式

进程 一个具有一定独立功能的程序在一组数据集合上的一次动态执行过程. 进程最显著的特点是拥有独立的地址空间. 内核模式 内核空间存放的是操作系统内核代码和数据,是被所以程序共享的. 操作系统禁止用户进程直接访问内核空间. 用户进程调用系统调用(System Call)来访问内核空间. 用户模式 用户空间存放的是应用进程的代码和数据,是进程私有的,其他进程一般无法访问. 为什么要区分两种模式? 内核 管理硬件 提供接口,供上层程序使用 为什么内核和用户进程要共用地址空间? 内核拥有独立的地址空间,

谈谈ios内存管理--持续更新

本文主要谈谈ios内存管理的发展脉络,不足之处,还请指教,相互学习交流.做ios开发,永远无法避开内存管理,无论我们是否有意识去考虑这个事情,但是只要我们写了OC程序,那么就与内存管理有关. 一.内存管理是做什么的? 二.内存管理方式一:MRC (一)引用计数器 (二)原则 (三)alloc.new.copy.mutableCopy.retain.release.dealloc alloc内部实现 引用计数表 (四)autorelease 三.内存管理方式二:ARC (一)__strong (二

【读书笔记】ORACLE 内存管理

<Administrator's Guide>第6章介绍了ORACLE实例的内存管理,在11g中,ORACLE默认使用自动内存管理(AMM)来管理SGA和PGA的大小.除了默认的方法之外,还可以使用自动共享内存管理SGA(ASMM).手动共享内存管理SGA.自动PGA内存管理.手动PGA内存管理. 一.自动内存管理 自动内存管理是最方便的内存管理方式,只需要设定参数MEMORY_TARGET的值,ORACLE 就会根据实际需要分配SGA和PGA. 1.1应用自动内存管理 1.用SYSDBA的身

iOS-多线程-内存管理

iOS与OSX 多线程和内存管理  总结 一.              自动引用计数 1.自动引用计数(ARC)就是指内存管理中对引用采用自动计数的技术. 满足以下条件即可使用这种功能: Xcode 版本为4.2以上: 使用LLVM编译器 版本为3.0以上: 编译器选项设置ARC为有效: 2.内存管理/引用计数 内存管理的思考方式: 2.1自己生成的对象,自己持有: 2.2非自己生成的对象,自己也能持有: 2.3不需要自己持有的对象时释放: 2.4非自己持有的对象无法释放: 2.1自己生成的对

iOS开发--漫谈内存管理(一)

1.MRC与ARC 苹果提供两种内存管理机制:一种是MRC(manual reference count),即手动引用计算:另一种是ARC(auto reference count),即自动引用计数.手动引用计,顾名思义,需要程序员主动调用retain.release等方法来管理内存,而自动引用计数方式,则是编译器在编译阶段把内存管理代码自动插入在需要手动调用的地方.这样就把程序员从复杂的管理内存的工作中解放出来,将更多精力放在实现具体的业务逻辑上.需要注意的是,ARC要在xcode4.2或者以

内存管理大总结

<link rel="stylesheet" href="http://yandex.st/highlightjs/6.2/styles/googlecode.min.css"> <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script><script src="http://yandex.st/highlightjs/6

Objective-C学习_内存管理学习笔记

  内存泄漏 : 应当废弃的对象在超出生命周期后继续存在 内存管理 : 遵守配对原则,有alloc/new/copy/mutableCopy就要有相对应的release或autorelease 原因 : Oc对象是在堆里面的(动态分配),堆里面的内存由我们程序员来管理 : 对象操作 Objective –c 对应方法 生成并持有对象 alloc/new/copy/mutableCopy等 持有对象 retain 方法 释放对象 release方法 废弃对象 dealloc方法(系统自动调) 内存