`
webcode
  • 浏览: 6065876 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Objective-C内存管理~~

 
阅读更多

原文链接:http://blog.csdn.net/dboylx/archive/2009/02/13/3888746.aspx

在使用Objective-C的工作中内存管理是首先要学会的一项技能,是如此重要。下面就来聊聊Apple官网上的内存管理的事情。

Objective-C的对象内存管理是一件非常有意思的事情,由其是在iPhone嵌入式设备中.

想玩的省心点,就得熟知它的管理规则,由其是内存的管理机制。了解它的品性了才能在Cocoa的世界里如鱼得水。否则,反之(如水得鱼!!^_^)。

首先,要牢记Apple的官网上的内存管理三定律:

1,一个对象可以有一个多个拥有者

2,当它一个拥有者都没有时,它就会被回收

3,如果想保留一个对象不被回收,你就必需成为它的拥有者(ownership)


所有内存管理的原则全在这里!!

简单??哈哈!

名人曰:“大道至简”

这儿玩意儿说起来比过家家还容易,但其实有些事情真正做起来并不是简单的事儿~~

咱们首先来说怎么样才能成为一个对象的拥有者。Cocoa提供了一个机制叫"reference counting",翻译过来就是“关联记数器”(自己翻译的,真不知叫啥,如果有官方的翻译请通知我)。每一个对象都有一个关联记数的值。当它被创建 时,它的值为“1”。当值减少到“0”时,就会被回收(调用它的deallocate方法,如果没有写,则调用从NSObject继承而来的回收方法,下 文有说,一定要重写该方法)。 以下几个方法可以操作这个记数:

1,alloc
为对象分配内存,记数设为“1”,并返回此对象。

2,copy
复制一个对象,此对象记数为“1”,返回此对象。你将成为此克隆对象的拥有者

3,retain
对象“关联记数”加“1”,并成为此对象的拥有者。

4,release
对象“关联记数”减“1”,并丢掉此对象。

5,autorelease

在未来的某一时刻,对象“关联记数”减“1”。并在未来的某个时间放弃此对象。

有了上面的几个方法(当然这也是所有的内存操作的方法,简单吧,哈哈哈)你就可以随意操作一个对象的记数。并部分或完全的控制它的生命周期。但实际 应用中,随意乱写上面的任何一个方法都可能会带来严重的内存泄露。混乱的内存分配等于没完没了的麻烦工作,你不想在情人节的日子还在为记数之类的鸟问题而丢了老婆吧~~哈哈哈,为了美丽温柔贤惠又善解人意的准老婆请牢记以下四条:

1,一个代码块内要确保copy, alloc 和 retain 的使用数量与 release 和 autorelease 的数量相同。

2,在使用以“alloc”或“new”开头或包含“copy”的方法,或“retain”一个对象时,你就会变为它的拥有者。

3,实现“dealloc”方法,并施放所有的实例变量。(其实这里还有很多的巧儿门!!)

4,永不自己调用“dealloc”方法,这是系统当“retain”减到“0”时,自动调用的。手动调用会引起retain count记数错误(多一次的release)。

其实做到这些也不难,

retain count 增加与减少的方法对应,板丁板做到了就行了。

翻译自:
http://developer.apple.com/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmPractical.html#//apple_ref/doc/uid/TP40004447

分享到:
评论

相关推荐

    Objective-C高级编程 iOS与OS X多线程和内存管理_Objective-C_ios_

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Apple平台开发中的关键技术的书籍。本书主要围绕Objective-C语言在iOS和OS X操作系统上的应用,特别是针对多线程和内存管理这两个核心主题进行...

    《深入浅出发Objective-C》 内存管理.pdf

    Objective-C的内存管理是一种重要的编程技能,它对于创建出色的应用程序至关重要。在深入探讨Objective-C内存管理之前,让我们以日常生活中的比喻来形象说明内存管理的过程:当我们在家中自己做饭时,需要亲自处理...

    Objective-C基础教程(入门教程).pdf

    综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...

    Objective-c语言学习-快速入门完整版完整版

    "第八讲 内存管理"是Objective-C开发中非常重要的一个环节,讲解了自动引用计数(ARC)和手动内存管理(MRC)的原理,以及如何避免内存泄漏。 最后,"第九讲 Foundation框架"介绍了苹果的基础框架,它提供了一系列...

    objective-c内存管理

    Objective-C的内存管理机制与.NET和Java等语言中常见的自动垃圾回收机制不同,它更接近于C语言的手动管理方式,但在此基础上加入了一些自动化手段,使得开发人员能够在一定程度上简化内存管理的工作。 ##### 1. ...

    Objective-C编程全解最新版.pdf.zip

    7. **ARC(Automatic Reference Counting)**:ARC是Objective-C中的内存管理机制,自动处理对象引用计数,避免了内存泄漏和过早释放的问题。 8. ** Blocks **:Objective-C引入了Blocks,这是一种内联函数或闭包,...

    Objective-C内存管理课件.pdf

    Objective-C内存管理是iOS开发中非常重要的一部分。在早期的Objective-C中,内存管理是通过引用计数(Reference Counting)的方式进行的,开发者需要手动对对象的引用进行管理。内存管理的基本原则可以概括为“谁...

    C语言主要知识点巩固(学习Objective-C 的前提)

    了解了C语言的基本语法后,还需关注内存管理,包括堆栈与堆的区别,以及如何正确地分配和释放内存以防止内存泄漏。 最后,良好的编程习惯和错误处理也是C语言学习中的重要环节。学会使用printf调试,理解并正确使用...

    Objective-C与Objective-C++的混用代码示例

    - **内存管理**:Objective-C使用ARC(Automatic Reference Counting),而C++使用自己的内存管理规则。在混用时要特别注意内存泄漏问题。 - **命名冲突**:C++的命名空间和Objective-C的类别可能会引起命名冲突,...

    Objective-C程序设计 第6版 pdf

    5. **内存管理**:Objective-C使用引用计数进行内存管理,书中会详细解释如何正确地持有和释放对象,以避免内存泄漏。 6. **NSObjects和协议**:Objective-C中的NSObject类是所有其他类的基类,书中会讲解它的方法...

    iPhoneMac_Objective-C内存管理教程和原理剖析.pdf

    ### Objective-C内存管理教程和原理剖析 #### 一、前言 Objective-C 是一种面向对象的编程语言,广泛应用于苹果的 macOS 和 iOS 开发中。由于 Objective-C 的内存管理机制与现代高级语言如 Java 或 .Net 的自动垃圾...

    Objective-C程序设计(第4版)(全球最畅销Objective-C编程书籍)

     《Objective-C 程序设计(第4版)》已经为iOS 5和Xcode4.2中的重大变更做了全面更新,最大的改动是引入了自动引用计数(ARC),并详细说明了如何在Objective-C编程过程中使用ARC提升和简化内存管理。

    Objective-C的语法与Cocoa框架.pdf

    Objective-C语法的基石是C语言的语法结构,这意味着所有的C语言代码都可以在Objective-C中直接使用。但是,Objective-C在C的基础上新增了消息传递机制,这是它与C语言的一个重要区别。在Objective-C中,方法调用是...

    《Objective-C基础教程》中文版(含源代码)

    4. **Foundation框架**:介绍Objective-C开发中最常用的Foundation框架,包括字符串处理、集合类(NSArray, NSDictionary等)、内存管理等基础工具的使用。 5. **Cocoa Touch**:对于iOS开发,会讲解Cocoa Touch...

    Objective-C2.0程序设计第二版中文版及代码

    2. **内存管理**:Objective-C 2.0引入了自动引用计数(ARC),大大简化了内存管理。开发者不再需要手动调用`retain`、`release`和`autorelease`,而是由编译器自动处理。 3. **分类与协议**:Objective-C允许对已...

    Objective-C高级编程 iOS与OS X多线程和内存管理

    《Objective-C高级编程:iOS与OS X多线程和内存管理》是一本深入探讨Objective-C在iOS和OS X平台上的核心特性的书籍。本书重点聚焦于多线程和内存管理两个关键领域,对于iOS和macOS应用开发人员来说,这是理解和优化...

    objective-c 内存管理Demo

    在Objective-C中,内存管理主要依赖于引用计数(Reference Counting)机制,后来在iOS 5.0引入的ARC(Automatic Reference Counting)自动管理了大部分内存操作。以下是对`alloc`, `init`, `release`这三个关键字的...

    Objective-C高级编程 iOS与OS X多线程和内存管理.

    Objective-C高级编程 iOS与OS X多线程和内存管理.

    objective-c基础教程

    4. **内存管理**: 早期版本的Objective-C采用手动内存管理的方式,开发者需要显式地分配和释放内存。自ARC(Automatic Reference Counting)机制引入后,Objective-C开始支持自动内存管理,大大降低了内存泄漏的风险。...

    Objective-C.2.0 中文版.pdf & Objective-C.chm

    首先,"Programming In Objective-C.chm" 是一本关于Objective-C编程的电子书,可能涵盖了语言的基本语法、类和对象的概念、消息传递机制、内存管理(在Objective-C中是ARC,即自动引用计数)、类别、协议、 Blocks...

Global site tag (gtag.js) - Google Analytics