转载请标明出处:
http://blog.csdn.net/hai_qing_xu_kong/article/details/53556243
本文出自:【顾林海的博客】

前言

Object-C的内存管理机制与java那种全自动的垃圾回收机制是不同的,它本质上还是c语言的手动管理方式,只不过稍微加了一些自动方法。

指针和指针的值

以下程序声明一个指向NSDate实例的变量:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...NSDate *today=nil;NSLog(@"%p",today);}return 0;
}

初始化指针变量为nil,程序输出0x0,这时在栈中的today变量值为0x0,而在堆上没有任何对象。

继续看下面实例:

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {// insert code here...NSDate *today=[NSDate date];NSLog(@"%p",today);}return 0;
}

这时创建了一个NSDate实例,today指向这个实例,不再指向nil。堆上面保存着一个NSDate对象。

内存管理

栈是由有序的帧构成的,函数的帧在函数结束后会自动释放,而堆里的对象不会自动释放。因此管理堆很重要,程序占用堆大小是有限的。而每个对象被创建后都会占用一定的堆内存,如果系统内存不足,mac应用的运行效果就会变差,而ios应用就会崩溃。

当堆中的对象没有被引用,这时就应该销毁。

自动销毁不被引用的对象的机制称为ARC,ARC是自动引用计数的简称。每个对象都会对指向自己的指针进行计数,当引用计数为0时,就会认为不需要该对象了。如果项目开启了ARC,编译器会自动给项目添加代码来计算每个对象的引用数。

只要有一个指针指向对象,这个对象就会继续存在。因此调用free()函数来销毁对象是清理最干净的方法。如果不再需要某个对象,则可以将指向它的指针设置成nil,或者销毁它的指针。

IOS开发笔记12-Object-C中的对象与内存相关推荐

  1. IOS开发笔记10-Object-C中的对象

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53513004 本文出自:[顾林海的博客] 前言 关于c语言的基础部分已 ...

  2. IOS开发笔记17-Object-C中的继承

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 在前面的程序Person.h文件中可以看到,Person继承了NSObj ...

  3. IOS开发笔记16-Object-C中的属性

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/54667858 本文出自:[顾林海的博客] 前言 前一篇笔记记录了自定类 ...

  4. IOS开发笔记13-Object-C中的NSString

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53572258 本文出自:[顾林海的博客] 前言 NSString是Ob ...

  5. IOS开发笔记11-Object-C中的传递消息

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53534039 本文出自:[顾林海的博客] 前言 在前一篇例子中传递的是 ...

  6. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  7. IOS开发笔记之推广安装(用网页判断是否安装App)

    IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...

  8. IOS开发笔记之常用的第三方库(太多了。)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  9. IOS开发笔记(九)——IM聊天工具个人详情页面,自定义tableview的accessaryView

    中山大学数据科学与计算机学院本科生实验报告 (2019年春季学期) 课程名称 IOS开发 任课老师 郑贵锋 年级 16 专业(方向) 软件工程(计算机应用方向) 学号 16340132 姓名 梁颖霖 ...

最新文章

  1. (winform cookie)如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证...
  2. 制度化规范化标准化精细化_精细化管理ORTCC模型在管理中的运用(下)
  3. 属于服务器操作系统的有,属于服务器操作系统的有
  4. Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
  5. 4.4.2 数值处理
  6. docker java 中文乱码_java使用awt包在生产环境docker部署时出现中文乱码的处理
  7. 关于DOS和命令行的故事
  8. redis的基本命令
  9. C++ 实现单例模式的代码。
  10. 相机的介绍--新手入门级介绍
  11. 局域网入侵检测过程详解
  12. 双创项目_宫颈癌智能风险检测(4)
  13. 奖金100万!北大“韦神”,获奖了!
  14. 如何做好电商平台的内容运营?
  15. 记事本中写c/c++程序在Windows下运行
  16. mysql创建三个表相互关联_mysql – 在三个表之间创建关系
  17. 小程的第一节C语言课
  18. WPM3012-3/TR单P沟道 增强型MOS 场效应晶体管WILLSEM
  19. Signal Processing for Active Control chapter3翻译
  20. 2019年11月中国大陆编程语言排行榜

热门文章

  1. mysql originator_MySQL中的事件调度器EVENT
  2. 让Java程序只运行一个实例
  3. RPi 3B Aduio 3.5mm output
  4. 工业物联网为“两化融合”带来巨大推力
  5. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
  6. linux bash基础
  7. 【C/C++学院】(27)项目实战HttpServer--原理分析
  8. 经常使用的android弹出对话框
  9. java实现二叉树的非递归遍历
  10. IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'