黑马程序员—IOS加强视频—oc内存管理
2015-08-21 07:28
387 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
.堆:存放的是一些动态分配的对象/类,系统是不会自动回收这些内存的
栈:存放的是一些临时的和局部变量,一旦不在作用域内,就会自动回收内存
oc中回收堆中动态分配的对象的内存的机制:引用计数器
引用计数器:在每个对象的内存中都有一个4个字节的引用计数器(int),每当对象被创建时,引用计数器的值就是1,当该值为0时,该对象的内存空间就被回收了
1.调用对象的 retain 方法 会使得计数器数字 +1,同时返回对象本身
2.调用对象的 release 方法 会使得计数器数值 -1
3.调用对象的 retaincount 方法 会返回当前对象的引用计数器的值
.当对象被回收时,系统还会自动调用dealloc 方法(是一个对象方法),在该方法中释放资源。通常我们都会在类中重写该方法,并且在方法中调用父类的dealloc
代码:[super dealloc] ,并且是方法的最后一句。
野指针:指向僵尸对象的指针
空指针:当指针所指向的地址为0时(指针对象=nil 赋值为空指针),通常一旦引用计数器为0就要执行该操作
一旦指针变成空指针,那么再用指针操作方法,就不会有任何效果,同时也不会报错(实质:不会像类发送任何的消息)
oc中没有空指针错误的。
如果通过alloc ([[类 alloc] init])、new ([类 new] )或者[mutable]copy创建一个对象,那么必须调用该对象的release方法
谁调用的retain方法,那么谁就必须调用release方法
注:慎重使用retain 和release 方法,一旦出错,会导致内存泄露。
最根本问题是retaincount=0。
.堆:存放的是一些动态分配的对象/类,系统是不会自动回收这些内存的
栈:存放的是一些临时的和局部变量,一旦不在作用域内,就会自动回收内存
oc中回收堆中动态分配的对象的内存的机制:引用计数器
引用计数器:在每个对象的内存中都有一个4个字节的引用计数器(int),每当对象被创建时,引用计数器的值就是1,当该值为0时,该对象的内存空间就被回收了
1.调用对象的 retain 方法 会使得计数器数字 +1,同时返回对象本身
2.调用对象的 release 方法 会使得计数器数值 -1
3.调用对象的 retaincount 方法 会返回当前对象的引用计数器的值
.当对象被回收时,系统还会自动调用dealloc 方法(是一个对象方法),在该方法中释放资源。通常我们都会在类中重写该方法,并且在方法中调用父类的dealloc
代码:[super dealloc] ,并且是方法的最后一句。
野指针:指向僵尸对象的指针
空指针:当指针所指向的地址为0时(指针对象=nil 赋值为空指针),通常一旦引用计数器为0就要执行该操作
一旦指针变成空指针,那么再用指针操作方法,就不会有任何效果,同时也不会报错(实质:不会像类发送任何的消息)
oc中没有空指针错误的。
如果通过alloc ([[类 alloc] init])、new ([类 new] )或者[mutable]copy创建一个对象,那么必须调用该对象的release方法
谁调用的retain方法,那么谁就必须调用release方法
注:慎重使用retain 和release 方法,一旦出错,会导致内存泄露。
最根本问题是retaincount=0。
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【155-Min Stack(最小栈)】
- 【LeetCode-面试算法经典-Java实现】【154-Find Minimum in Rotated Sorted Array II(找旋转数组中的最小数字II)】
- 【LeetCode-面试算法经典-Java实现】【153-Find Minimum in Rotated Sorted Array(找旋转数组中的最小数字)】
- 黑马程序员——Java基础---继承、抽象、接口(一)
- 黑马程序员——反射
- 黑马程序员_java基础学习IO流学习笔记
- 剑指Offer面试题:7.旋转数组的最小数字
- 程序员应该避免的5种代码注释
- 9秒学院:为什么程序员也能成为伟大的CEO
- 【面试题之算法部分】LIS最长递增子序列
- 每天五个java相关面试题(6)--jsp篇
- ios-面试
- 黑马程序员04面向对象概述
- 黑马程序员_Java集合框架
- 【面试题之算法部分】最长回文子串
- 黑马程序员03数组排序与二分法查找
- 黑马程序员02JAVA基础语法
- 面试题,凑14,将数组中相加为14的数去除,并升序排列
- 黑马程序员01JAVA概述
- 黑马程序员——Java基础---数组与集合之间转换