文档章节

OC 内存管理-----MRC(手动释放内存)

尘埃眠于光年yr
 尘埃眠于光年yr
发布于 2015/10/16 18:38
字数 520
阅读 113
收藏 2
点赞 0
评论 0

IOS的内存管理

1.IOS中对于每一个对象都会有一个对象计数器


2.IOS内存管理分为三种(MRC:手动释放内存  autorelaese:自动释放内存 ARC:自动引用计数)

(1)MRC 黄金法则: 一旦对象被创建(new alloc init copy retain,那么就由创建者释放。总结:谁创建,谁释放,谁retain,谁release。其中 retain 计数器加一  release 计数器减一。

使用方式:Target-> 搜索auto -> 找到Automatic Reference Counting 将其修改成NO


如情况一

 //实例化Person对象 此时计数器为 1

    Person *person1 = [[Person alloc]init];

    //计数器加一

    [person1 retain];

    //计数器减一

    [person1 release];

    //打印当前计数器的值

    NSLog(@"%li",[person1 retainCount]);


如情况二

 //若只是创建一个person的指针 则计数器为 0

    Person *person;

     // 因为计数器的release是针对于对象计数器而言的,此时没有对象,所以即使[person retain] 打印出的计数器的值永远为0

    

如情况三

 //创建了一个Dog对象

    Dog *dog = [[Dog alloc]init];

 //给人设置狗对象后,狗被引用一次 , 此时dogretainCount2

    [person1 setDog:dog];


//类的类属性,设置和获取,setget,现在可以简便化:

    //@property \ @synthesize

    //noatomic 高性能  atomic 低性能

    //retain 代表针对于这个对象计数器+1

    //readonly  代表对象只读

    //setter getter 更改这个方法的名字

    //assign 赋值通过针对于简单的数据类型


 //3.释放内存用dealloc,一般在.m文件中实现 [super dealloc],只要调用对象的release方法,就会进入dealloc;

    

//4.类的类属性,setget,现在可以简化为:@property @synthesize

    //noatomic 高性能  atomic 低性能 readonly  代表对象只读

    //setter getter 更改这个方法的名字

   

//5.有内存管理,用retain  OC语言的数据类型可内存管理

   // @property( nonatomic , retain ) Dog *dog;

    

  无内存管理 assign  c语言的基础数据类型无内存管理

  // @property( nonatomic , assign ) int age;







© 著作权归作者所有

共有 人打赏支持
尘埃眠于光年yr
粉丝 0
博文 15
码字总数 13635
作品 0
西安
iOS中的内存管理(下)

首先来看一个参数:@property(详见:http://my.oschina.net/aofe/blog/265789) @property在内存管理中的作用: 1、可以控制set方法的内存管理; 1> retain:release旧值,retain1新值(用于...

傲风凌寒 ⋅ 2014/05/21 ⋅ 0

ARC 之内存转换

在iOS世界,主要有两种对象:Objective-C 对象Core Foundation 对象 Core Foundation对象主要是有C语言实现的 Core Foundation Framework 的对象,其中也有对象引用计数的概念,只是不是 Co...

哥特复心 ⋅ 2014/03/02 ⋅ 0

OC内存管理常见的面试题

#####面试:说一说对内存管理的理解?(原理) - 手动内存管理(MRC):1.在创建一个对象的时候系统会自动创建这个对象的引用计数并赋值为1;2.当引用计数为0的时候,对象会去调用dealloc方法来...

鹿微微鹿 ⋅ 2016/03/25 ⋅ 0

iOS 简单而粗暴的说一说内存管理

简介: 既然是内存管理,首先要知道那么内存是用来干什么的?内存具体管理的东西是什么?当然这些东西基本都是常识了,内存当然是用来存储数据的,内存要管理的东西简单的说也就是如何将数据存...

吃粑粑的毕教授 ⋅ 2017/09/30 ⋅ 0

内存管理学习整理

内存管理梳理: 内存管理的开始,首先我们要梳理下,为什么要管理内存,像街道上的每个建筑都有他的地址一样,在电脑里, 每个数据也都有它存放的空间,每个空间都和它的地址一一对应。我们建...

0_0Loong ⋅ 2015/05/24 ⋅ 0

iOS引用转换:Foundation与Core Foundation对象互相转换(__CFNSString转NSString,void *转id等等)

1. 两个框架的基本知识 1.1 Foundation 框架名是,在Xcode新建工程时可以选择导入(其实会默认自动依赖好)。Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,...

陈满iOS ⋅ 05/10 ⋅ 0

OC中解决循环引用的两种方式

1.weak weak typeof(self) weakSelf = self ARC中,weak本身是一种观察者模式,一旦发现对象被释放,会自动将地址置为nil,更加安全 效率:weak的效率略微差一些,以纳秒级别,差几纳秒而已 ...

Persistence__ ⋅ 2017/12/08 ⋅ 0

OC-基础总结(二)

OC基础总结 重新回过头看这些基础知识,对许多知识点都有新的认识,拥有坚实的基础才能更快的成长。 OC内存管理 - 基础与MRC 内存管理概述 内存管理 内存的作用:存储数据。 1). 如何将数据存...

xx_cc ⋅ 2017/05/01 ⋅ 0

oc的内存管理机制.及自动释放池的解析

一.内存管理的方式 MRC 人工引用计数:内存的开辟和释放由程序代码无师自通控制,() ARC 自动引用计数(不是自动内存管理)(编译器帮助程序员默认加了释放代码) 在C中使用malloc和free oc中内存管...

Dolion-Hou ⋅ 2016/03/20 ⋅ 0

oc 内存管理初级

⼀、内存管理的⽅式 1、内存常见问题 (1)野指针异常:指针操作已经销毁的对象 指针指向某对象,该对象释放后,该指针即为野指针,对其操作造成野指针异常。 原因:过度释放。 (2)内存溢出:超...

黑伞将军 ⋅ 2015/08/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android JNI 读写Bitmap的方法

Java层创建Bitmap,通过JNI将Bitmap传到C/C++进行处理 Java部分 public static native boolean greenBitmap(Bitmap bitmap); C/C++部分 JNIEXPORT jboolean JNICALL Java_com_test_Test_gree......

国仔饼 ⋅ 16分钟前 ⋅ 0

一次性让你懂async/await,解决回调地狱

什么是async? 欢迎留言讨论 async 函数是 Generator 函数的语法糖。使用 关键字 async 来表示,在函数内部使用 await 来表示异步。相较于 Generator,async 函数的改进在于下面四点: 内置执...

阿K1225 ⋅ 16分钟前 ⋅ 0

angular常用命令

.下载更新操作 1.利用npm下载angular的命令行工具AngularCLI: npm install -g @angular/cli 2.下载jquery: npm install --save jquery 3.更新npm: npm i -g npm 4.更新angular: ng update ......

消散了的诗意 ⋅ 19分钟前 ⋅ 0

window.print 页面打印

定义和用法 print() 方法用于打印当前窗口的内容。 语法 window.print(); window.print() 实际上,是浏览器打印功能菜单的一种程序调用。与点击打印功能菜单一样,不能精确分页,不能设置纸型...

初学者的优化 ⋅ 19分钟前 ⋅ 0

魔兽世界 7.0版本上 PVE装备全攻略

  T套 因为大家应该都会打穿副本的所以具体是哪个boss我就不说了。   T1: 所有套装都在【熔火之心】出   T2: 头原来是在【奥妮克希亚的巢穴】改到黑翼之巢的奈法利安了,腿是在【熔火之...

wangchen1999 ⋅ 20分钟前 ⋅ 0

java.math.BigDecimal使用小结

原文地址 java.math.BigDecimal使用小结 divide方法 使用BigDecimal.divide方法时一定要考虑: 除数是否为0 商是否是无限小数 正确的使用方式 判断除数是否为0,是0做另外的处理逻辑 调用除法...

666B ⋅ 23分钟前 ⋅ 0

关于qstring转char乱码问题。

if (OpenClipboard(NULL)) { HGLOBAL hgClip; EmptyClipboard(); QByteArray byay = FValue.toLocal8Bit(); //转latin编码 char *bochsrc_line = byay.data(); hgClip = GlobalAlloc(GMEM_DD......

backtrackx ⋅ 23分钟前 ⋅ 0

了解SSH加密和连接过程

介绍 SSH或安全shell是安全协议,也是安全管理远程服务器的最常用方式。通过使用多种加密技术,SSH提供了一种机制,用于在双方之间建立加密安全连接,对彼此进行身份验证,以及来回传递命令和...

吴伟祥 ⋅ 29分钟前 ⋅ 0

微信小程序

小程序的全局配置app.json 微信小程序的全局配置保存在app.json文件中。开发者通过使用app.json来配置页面文件(pages)的路径、窗口(window)表现、设定网络超时时间值(networkTimeout)以...

上官清偌 ⋅ 32分钟前 ⋅ 0

【转】百度坐标坐标系之间的转换(JS版代码)

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换 *///定义一些常量var x_PI = 3.1415926535897932...

HAVENT ⋅ 34分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部