内存管理方针
用于内存管理的基本模型采用引用计数的环境之中提供的组合方法中定义在NSObject协议和标准方法的命名约定。NSObject类也定义了一个方法:dealloc,当调用一个对象时自动回收,本文描述了Cococa程序中你需要知道的基本规则,同时提供了许多正确的使用示例
基本的内存管理规则方针
内存管理模型是基于对象的所有权。任何对象都可能有一个或者多个所有者,只要一个对象至少还有一个所有者,就让他继续存在,如果一个对象没有所有者,正在运行的系统就会把它自动消灭。为了清楚的确保你是否拥有一个对象,Cocoa制定了以下政策:
你拥有所有你创建的对象
你可以通过“alloc”、 “new”、“copy”或者“mutableCopy” (例如alloc、 newObject、 或者 mutableCopy)等方法去创建一个对象
你可以通过“retain”去获取一个对象的所有权
一个被收到的对象通常保证依然有效当他在这个方法内被接收时,这个方法也可以安全的返回调用程序对象。你可以在两种下使用“retain”:(1)、在一个访问方法的实现方法或者“init”方法时,为了获取你想要作为一个属性值去存储的一个对象的所有权。(2)、为了防止一个对象因为一些其他的操作后果而从此被失效(如用来解释避免你正在使用的对象重新分配单元)
当你不再需要他的时候,你必须放弃你所拥有的对象的所有权
你通过给它发送一个release消息或者一个autorelease消息来放弃一个对象的所有权。在Cococa术语中,放弃一个对象的所有权通常称为“释放”对象
你不能释放一个不是你所拥有的对象的所有权
这仅仅是上述政策规则的必然结果,明确的规定
 
以上纯属自己翻译,水平有限,大神如果有好的资源可以分享
 

Objective-C 内存管理原则的更多相关文章

  1. OC基础--OC内存管理原则和简单实例

    ARC: 由于自己的学习视频太早,Xcode是iOS6版本,新建命令行项目后,系统会默认启动ARC机制,全程Automatic Reference Counting,简单的说,就是代码中自动加入了re ...

  2. Objective C内存管理之理解autorelease------面试题

    Objective C内存管理之理解autorelease   Autorelease实际上只是把对release的调用延迟了,对于每一个Autorelease,系统只是把该Object放入了当前的A ...

  3. Objective C 内存管理[转]

    1  配对原则 alloc – release new – release retain - release copy – release 2  new和alloc-init的区别 (1)区别只在于a ...

  4. C++内存管理原则

    内存可分配的地方有2个: 栈Stack和堆Heap. 内存管理的方式有3种: RAII, 智能指针或者GC. 不推荐自己管理裸指针. C++的内存管理其实是一个哲学问题: 怎样才能确定一个东西没有被其 ...

  5. objective C 内存管理及属性方法具体解释

    oc为每一个对象提供一个内部计数器.这个计数器跟踪对象的引用计数,当对象被创建或拷贝时.引用计数为1.每次保持对象时,调用retain接口.引用计数加1.假设不需要这个对象时调用release,引用计 ...

  6. iOS学习17之OC内存管理

    1.内存管理的方式 1> iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2> 内存问题 野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 内存泄 ...

  7. 内存管理和@property的属性

    内存管理和@property的属性 目录 对内存管理的理解 Objective C内存管理方式 内存的管理 对象的所有权和内存管理原则 合理解决内存管理带来的问题 自动释放池 @property的属性 ...

  8. iOS开发核心语言Objective C —— 全部知识点总结

    本分享是面向有意向从事iOS开发的伙伴及苹果产品的发烧友,亦或是已经从事了iOS的开发人员,想进一步提升者.假设您对iOS开发有极高的兴趣,能够与我一起探讨iOS开发.一起学习,共同进步.假设您是零基 ...

  9. xcode 手动管理内存 的相关知识点总结

    一.XCode4.2以后支持自动释放内存ARC xcode自4.2以后就支持自动释放内存了,但有时我们还是想手动管理内存,这如何处理呢. 很简单,想要取消自动释放,只要在  Build Setting ...

随机推荐

  1. 用Ossim管理IT资产(视频)

    用Ossim管理IT资产 在Ossim中集成了Ocs Server,OCS用于帮助网络或系统管理员来跟踪网络中计算机配置与软件安装情况的应用程序.收集到硬件和系统信息,OCS Inventory 也可 ...

  2. [前端 4] 使用Js实现图片上传预览

    导读:今天做图片上传预览,刚开始的做法是,先将图片上传到Nginx,然后重新加载页面才能看到这个图片.在这个过程中,用户一直都看不到自己上传的文件是什么样子.Ps:我发现我真的有强迫症了,都告诉我说不 ...

  3. jQuery插件开发方式

    一.jQuery扩展 1.$.extend(object) 类似于.Net的扩展方法,用于扩展jQuery.然后就可以用$.的方式调用. $(function(){ $.extend({ fun1: ...

  4. Windows phone 8 学习笔记(6) 多任务(转)

    Windows phone 8 是一个单任务操作系统,任何时候都只有一个应用处于活跃状态,这里的多任务是指对后台任务的支持.本节我们先讲讲应用程序的运行状态,然后看看支持的后台任务,包括:后台代理.后 ...

  5. iOS取证将如漫漫长夜

    日前因恐攻一案,FBI对一支已上锁的iPhone 5c束手无策,美国法院出具命令要求苹果配合,但被苹果公司执行长库克以维护安全及隐私为由悍然拒绝. 平心而论,各有其立场,但在一个犯罪案件之中,真的可以 ...

  6. Javascript 常用系统内置函数

    1:在数组指定位置插入元素 array.splice(2, 0, "three");   //在索引2的位置,删除0个元素后,插入元素“three” 例子: // 原来的数组 va ...

  7. File Manager文件管理应用android源码

    这个刚刚在安卓教程网那里看到的,File Manager文件管理应用android源码,这个是File Manager文件管理应用源码,源码filemanager,一个开源的文件管理器完整源码,文件查 ...

  8. 大数据实践:ODI 和 Twitter (一)

    本文利用twitter做为数据源,介绍使用Oracle大数据平台及Oralce Data Integrator工具,完成从twitter抽取数据,在hadoop平台上处理数据,并最终加载到oracle ...

  9. mac 下 svn ignore 操作

    如何在svn中设备忽略的文件或者文件夹 1.如果你还没有对你的文件夹进行版本控制,则可以直接图形操作上进行ignore,或者在命令中运行 svn propedit svn:ignore 文件夹名 . ...

  10. javascript回车完美实现tab切换功能

    javascript通过回车实现tab切换功能,最经有一个项目是给化工厂做的在使用的过程中需要输入大量的数据,使用的都是小键盘区,在以前都是通过excel录入数据的现在, 在网页上需要实现excel ...