iOS中内存管理基本概念
来源:互联网 发布:下载淘宝软件并安装 编辑:程序博客网 时间:2024/05/16 10:28
我们都知道,在使用objective-c进行iOS应用开发中,我们创建一个对象主要分为三个步骤:
分配内存空间,存储对象(alloc)
初始化成员变量(init)
返回对象的指针地址
MRC
在使用MRC进行程序开发中,每当我们创建一个对象的时候,系统都会为我们一个与内存管理相关的属性:retainCount(引用计数器),该属性用来记录当前对象被引用的次数,当一个对象刚刚创建出来的时候,retainCount的初始值为1,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount = 0的时候,系统会毫不犹豫回收当前对象.
改变retainCount的值可以对对象进行retain操作,使得对象的引用计数器值+1(retainCount + 1 ,返回self),执行release操作,可以让引用计数器的值-1(retainCount - 1);
当引用计数retainCount = 0的 对象就被销毁了
- 当一个对象要被销毁的时候,系统会自动调用dealloc函数,通知对象将要被销毁
内存管理黄金法则:
如果一个对象使用了alloc,[mutable] copy,retain,new,那么你必须使用相应的release或autonrelease
例如:在我的代码中有一个person类,简单对retain和release进行演示
#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]){ @autoreleasepool { // 创建对象,对象当前的retainCount = 1 Person * p = [[Person alloc] init]; NSLog(@"%lu",p.retainCount); // 通过的p对象执行retain操作,retainCount+1,当前retainCount = 2 [p retain]; NSLog(@"%lu",p.retainCount); // 对p对象执行release操作,retainCount-1,当前retainCount = 1 [p release]; NSLog(@"%lu",p.retainCount); //执行release操作,retainCount = 0 ,调用person的dealloc方法 [p release]; }
0 0
- iOS中内存管理基本概念
- iOS 内存管理(一):基本概念与原理
- iOS内存管理:基本概念与原理
- iOS中内存管理
- iOS中内存管理
- iOS中内存管理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- iOS/OS X内存管理(一):基本概念与原理
- 内存管理基本概念
- hdu 2594 Simpsons’ Hidden Talents(KMP)
- GCC 下 tranform 调用 toupper, tolower 出错原因及解决
- leetcode之 Factorial Trailing Zeroes
- 【cocos3.9+box2d+tileMap】踩过的那些坑
- 重头来过-只为不遗憾,提高班半年学习总结!
- iOS中内存管理基本概念
- 【两道不会写的题】
- [原创]《穷人的小孩难成功-走出人生负面循环》视野的继承与影
- JS中的prototype
- 深入了解Java之三(集合方面)
- 把WebService发布到IIS网站下(IIS 7)
- leetcode之Binary Tree Level Order Traversal
- 一种局域网机器定时备份方案
- Apache+PHP+MySQL三部曲之:Apache2.4安装详解 - 20160123最新更新