文档章节

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

尘埃眠于光年yr
 尘埃眠于光年yr
发布于 2015/10/16 18:38
字数 520
阅读 118
收藏 2

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
西安
OC内存管理常见的面试题

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

鹿微微鹿
2016/03/25
275
0
iOS 编写高质量Objective-C代码(五)

级别: ★★☆☆☆ 标签:「iOS」「内存管理」「Objective-C」 作者: MrLiuQ 审校: QiShare团队 前言: 这几篇文章是小编在钻研《Effective Objective-C 2.0》的知识产出,其中包含作者和小...

QiShare
09/05
0
0
iOS 简单而粗暴的说一说内存管理

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

吃粑粑的毕教授
2017/09/30
0
0
iOS引用转换:Foundation与Core Foundation对象互相转换(__CFNSString转NSString,void *转id等等)

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

陈满iOS
05/10
0
0
OC中解决循环引用的两种方式

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

Persistence__
2017/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

visualVm 中的 visual GC说明

visual GC 不是 visualVM 自带的,需要安装插件。 步聚:菜单栏 (Tools) - > plugins - > Avaiable Plugins 中就选择安装 Spaces: 各个分代的内存使用情况。 特别说明:风格有分灰色部分,...

Canaan_
昨天
1
0
学习设计模式——生成器模式

1. 认识生成器模式 1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2. 组成: Builder:生成器接口,定义创建一个Product对象所需要的各个组件的操作,...

江左煤郎
昨天
0
0
C语言精要(第二章:基本数据类型)

2.1 C语言基本数据类型 在计算机术语中,把⼆进制数中的某⼀位数又称为⼀个⽐特(bit)。⽐特这个单位对于计算机⽽⾔,在度量上是最⼩的单位。除了⽐特之外,还有字节(byte)这个术语。⼀个...

ryanliue
昨天
0
0
实现下拉菜单多选框效果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><li>工作意愿地:<%-- <c:forEach items="${list}" var="list"><input type="checkbox" value="${list......

lanjian28
昨天
1
0
scala的视图界定

在上一篇帧子的代码中,如果main函数中不是用字符串而是用数字则程序不能正常编译: class Pair[T <: Comparable[T]](val first:T,val second:T) //类型T必须要是Comparable接口的子类(即...

whoisliang
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部