文档章节

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

尘埃眠于光年yr
 尘埃眠于光年yr
发布于 2015/10/16 18:38
字数 520
阅读 116
收藏 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 简单而粗暴的说一说内存管理

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

吃粑粑的毕教授
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-基础总结(二)

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

xx_cc
2017/05/01
0
0
OC中解决循环引用的两种方式

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

Persistence__
2017/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

go语言学习总结

一、描述 go语言是直接将源码编译成二进制机器码的语言;它支持面向对象、也支持函数式编程;支持并发很容易; 二、基本语法学习路径 https://studygolang.com/subject/2...

盼望明天
27分钟前
2
0
JSP 九大内置对象及其作用域

JSP 中一共预先定义了 9 个这样的对象,分别为:request、response、session、application、out、pagecontext、config、page、exception ,下面就简单介绍下。 1、request 对象 request 对象...

几个栗子
38分钟前
1
0
Java中的坑之方括号

Java中的坑之方括号 这一段时间,在做项目的时候,发现了一个坑,这个坑说大不大,说小不小,不知道的足够喝一壶,知道的就可以轻松解决。 问题描述 在做数据统计的时候,遇见了如下形式的数...

星汉
49分钟前
2
0
[雪峰磁针石博客]python机器学习、web开发等书籍汇总

Building Machine Learning Systems with Python Third Edition - 2018.pdf 下载地址 Get more from your data by creating practical machine learning systems with Python Key Features ......

python测试开发人工智能安全
今天
1
0
文件的压缩与解压(linux)

Linux下*.tar.gz文件解压缩命令 1.压缩命令:   命令格式:tar -zcvf 压缩后文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 2.解压缩命令: ...

qimh
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部