1.上篇我们讲了OC中的内存管理基础,我们再总结一下何时该用内存管理。
1)当用new、alloc、copy创建对象时,必须要释放对象。

2)当拥有对象时,如果是临时对象,不需要释放;当需要长时间保留对象时,必须保留对象并且在dealloc方法中释放对象。

2.OC中的垃圾回收机制

OC2.0引入了垃圾回收机制,也就是启用了垃圾回收机制之后,我们忘记了释放对象,OC会帮我们释放对象,这点可看出OC比C++的强大之处了。

垃圾回收机制主要原理是在运行中定时动态跟踪对象,检查对象的引用技术并且进行清理,垃圾回收只支持mac,ios不支持,原因是在运行过程中动态释放,对于手机app不适用,所以apple引入ARC来解决问题。需要注意的是:我现在用的XCode6设置里面已经没有垃圾回收机制设置了。

3.IOS中ARC机制

ARC(automatic reference counting)机制跟垃圾回收机制差不多,都会帮助你管理对象的生命周期。不同的是垃圾回收机制是在运行时决定释放对象的,ARC是在编译的时候编译器给我们的代码偷偷地加上retain、release方法。我们可以选中工程,通过菜单Edit->Refactor->Convert to Objective-C ARC来对工程进行ARC转换。ARC只对ROP对象起作用。具体讲解可以参考OC基础教程活着apple官网文档https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html。

转载于:https://www.cnblogs.com/52xpz/p/4246889.html

Objective-C基础3:内存管理续相关推荐

  1. Objective -C Memory Management 内存管理 第一部分

    Objective -C Memory Management  内存管理  第一部分 Memory management is part of a more general problem in pr ...

  2. LevelDB 源码剖析(三)公共基础:内存管理、数值编码、Env家族、文件操作

    文章目录 内存管理 Arena 结构 内存分配 内存使用率统计 TCMalloc Env家族 PosixEnv EnvWrapper InMemoryEnv 文件操作 SequentialFile W ...

  3. Boost学习笔记(一)——Boost使用基础、内存管理

    一.Boost使用基础 Boost库的大部分组件(90%左右),不需要进行编译,直接包含头文件即可使用. #include <boost/logic/tribool.hpp> using ...

  4. java与c内存管理_Java基础--Java内存管理与垃圾回收

    Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} public ...

  5. python内存池机制,python基础—12python内存管理机制

    一.内存池机制 1.对象池 面试题目: python内存管理机制是什么? 1). 由于python中万物皆对象,内存管理机制就是对象的存储问题,Python会分 配一块内存空间去存储对象. 2) 对于 ...

  6. C语言基础分享——内存管理3

    嗨喽,我是春哥,今天主要介绍段错误以及调试方法,经常遇到段错误,对C语言的理解才会更深. 个人建议收藏此文,这应该是介绍调试方法比较全面的了. 先介绍一下什么是段错误,段错误就意味着你访问了错误的内存 ...

  7. bada开发基础之内存管理

    1.两阶段构造 为了防止内存泄露,bada在构造对象时使用了两阶段构造,个人觉得bada的内存管理很大程度上借鉴了symbian.先让我们来看看bada文档上这段代码: class SimpleCla ...

  8. halcon/c++接口基础 之内存管理

    所有的HALCON类,不仅仅HImage,HRegion,HTuple,HFramegrabber等等,还有面向过程的方法中使用的Hobject,都可以使用默认的析构器自动释放内存. ( see al ...

  9. linux c 指针和内存分配内存,linux-C基础系列-内存管理(野指针).md

    野指针概述 野指针通常指的是指针变量中保存的值不会死一个合法的内存地址,但又对其访问.需要注意的是野指针不是空指针,而是指向内存不可用的指针. C语言中对于空指针(NULL)是可以判断出来的,但是野指 ...

最新文章

  1. 计算机能破坏光盘中的系统吗,因为某些程序被破坏需要重装系统,用2000的盘重装可以吗?...
  2. CSS3自定义滚动条
  3. poj 3580 splay
  4. 全球及中国造纸行业十四五产量调研与运营能力状况分析报告2022版
  5. WebRTC 中的基本音频处理操作
  6. Android 核心已经从 Linux kernel 代码库中删除
  7. PRML-系列一之1.2
  8. 在Centos环境下搭建Confluence
  9. centos php自动提示,CentOS环境实现Git命令自动补全
  10. python︱处理与使用json格式的数据(json/UltraJSON/Demjson)、pickle模块、yaml模块
  11. Haar人脸检测:Haar特征 + Adaboost+ 级联分类器及改进
  12. PADS9.5 导入立创元器件库卡顿
  13. 知群产品经理必修TOP班 学习笔记:电梯演讲和商业画布
  14. 修真院教学模式三大阶段之真实项目
  15. 游戏灰黑产离我们有多近
  16. 满城尽带黄金“假”(二)——断臂殇为谁而鸣
  17. 黄色-图片识别引擎的一些心得
  18. 2016校招薪资汇总
  19. 如何通过技术手段批量删除公众号文章?
  20. 越学越有趣:『手把手带你学NLP』系列项目02 ——语义相似度计算的那些事儿...

热门文章

  1. mysql分区管理 - hash分区
  2. 我的手绘2013.01.27
  3. 性能报告——使用AOP与DYNAMICProxy的orm性能测试
  4. oracle sysdate 截取年月日,oracle中extract()函数----用于截取年、月、日、时、分、秒...
  5. 用计算机模拟病毒,计算机模拟揭露HIV病毒体内传播细节,有望为治疗提供新途径...
  6. 系统性能指标、压测、性能优化思路
  7. Zookeeper之Watcher机制详解
  8. mysql 添加表索引_如何向MySQL表中添加索引?
  9. 3-35Pytorch与visdom
  10. anaconda安装sklearn_1. Sklearn —— 简介+安装