IOS开发笔记12-Object-C中的对象与内存
转载请标明出处:
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中的对象与内存相关推荐
- IOS开发笔记10-Object-C中的对象
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53513004 本文出自:[顾林海的博客] 前言 关于c语言的基础部分已 ...
- IOS开发笔记17-Object-C中的继承
转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! ##前言 在前面的程序Person.h文件中可以看到,Person继承了NSObj ...
- IOS开发笔记16-Object-C中的属性
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/54667858 本文出自:[顾林海的博客] 前言 前一篇笔记记录了自定类 ...
- IOS开发笔记13-Object-C中的NSString
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53572258 本文出自:[顾林海的博客] 前言 NSString是Ob ...
- IOS开发笔记11-Object-C中的传递消息
转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53534039 本文出自:[顾林海的博客] 前言 在前一篇例子中传递的是 ...
- iOS开发笔记-两种单例模式的写法
iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...
- IOS开发笔记之推广安装(用网页判断是否安装App)
IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...
- IOS开发笔记之常用的第三方库(太多了。)
图像: 1.图片浏览控件MWPhotoBrowser 实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...
- IOS开发笔记(九)——IM聊天工具个人详情页面,自定义tableview的accessaryView
中山大学数据科学与计算机学院本科生实验报告 (2019年春季学期) 课程名称 IOS开发 任课老师 郑贵锋 年级 16 专业(方向) 软件工程(计算机应用方向) 学号 16340132 姓名 梁颖霖 ...
最新文章
- (winform cookie)如何向某网址Post信息,并得到CookieContainer以便以后直接通过验证...
- 制度化规范化标准化精细化_精细化管理ORTCC模型在管理中的运用(下)
- 属于服务器操作系统的有,属于服务器操作系统的有
- Deep Learning(深度学习)学习笔记整理系列之LeNet-5卷积参数个人理解
- 4.4.2 数值处理
- docker java 中文乱码_java使用awt包在生产环境docker部署时出现中文乱码的处理
- 关于DOS和命令行的故事
- redis的基本命令
- C++ 实现单例模式的代码。
- 相机的介绍--新手入门级介绍
- 局域网入侵检测过程详解
- 双创项目_宫颈癌智能风险检测(4)
- 奖金100万!北大“韦神”,获奖了!
- 如何做好电商平台的内容运营?
- 记事本中写c/c++程序在Windows下运行
- mysql创建三个表相互关联_mysql – 在三个表之间创建关系
- 小程的第一节C语言课
- WPM3012-3/TR单P沟道 增强型MOS 场效应晶体管WILLSEM
- Signal Processing for Active Control chapter3翻译
- 2019年11月中国大陆编程语言排行榜
热门文章
- mysql originator_MySQL中的事件调度器EVENT
- 让Java程序只运行一个实例
- RPi 3B Aduio 3.5mm output
- 工业物联网为“两化融合”带来巨大推力
- 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...
- linux bash基础
- 【C/C++学院】(27)项目实战HttpServer--原理分析
- 经常使用的android弹出对话框
- java实现二叉树的非递归遍历
- IE7下元素的 'padding-top' 遇到 'clear' 特性在某些情况下复制到 'padding-bottom'