内存管理-MRC
MRC内存管理
环境:先关闭arc模式,选中项目-》build Settings
需记住Tips:
1.alloc,new, retain, copy,mutableCopy 需要release或autorelease
2.self 在实例方法(动态方法)代表当前类,在类方法(静态方法)中谁调用则代表谁,调用类方法的对象不需要进行释放
(一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,可以节省内存)
3.在方法后后面添加autorelease,会把对象交给autoreleasepool释放,但不建议把太多对象交于autoreleasepool,会占用内存
4.内存释放后,retainCount=0时,会调用-(void)dealloc方法
5.[[student alloc]init];即使不是student *stu=[[student alloc]init];也会分配内存
6.[[student alloc]init];等同[student new];
7.野指针,访问已释放的内存地址,程序会奔溃
release对象后,retainCount=0时,对象释放,但指向该对象的指针并未释放,仍存储着原来对象的地址,通过=nil来释放该指针
property属性:
retain:继承了NSObject对象才需要retain,release旧值,retain新对象
如:assign:基本数据类型,默认setter方法直接赋值,不涉及内存释放问题
atomic 线程加锁,保证线程安全,防止写入未完成,被其他线程访问,但耗性能
nonatomic 不需要考虑线程安全,禁止多线程,提高性能
readonly 只读
readwrite 读写
copy/mutableCopy:release旧对象,copy新对象copy生成对象为不可变对象,mutableCopy生成对象为可变对象
不可变对象copy为不可变对象,为浅复制,其余为深复制
//浅复制,复制指针,指向原对象,原对象内存计数器+1
//深复制,复制对象,原对象内存计数器不变,新对象内存计数器为1
实例:(了解浅复制、深复制的概念,基本了解了内存管理的概念)
内存管理-MRC的更多相关文章
- Objective-c的内存管理MRC与ARC
Objective-c的内存管理MRC与ARC Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ...
- OC内存管理(MRC)
首先说明一下几块存储区域: 栈区(局部变量.函数参数值) 堆区(对象.手动申请/释放内存) BSS区(未初始化的全局变量.未初始化的静态数据) 常量区(字符串常量以及初始化后的全局变量.初始化后的静态 ...
- iOS-旧项目中手动内存管理(MRC)转ARC
在ARC之前,iOS内存管理无论对资深级还是菜鸟级开发者来说都是一件很头疼的事.我参 加过几个使用手动内存管理的项目,印象最深刻的是一个地图类应用,由于应用本身就非常耗内存,当时为了解决内存泄露问题, ...
- 内存管理-MRC与ARC详解
Objective-C提供了两种内存管理机制MRC(Mannul Reference Counting)和ARC(Automatic Reference Counting),为Objective-C提 ...
- OC 内存管理之手动内存管理MRC
一.基本原理 1.什么是内存管理 内存管理的重要性: 移动设备的内存极其有限,每个app所能占用的内存是有限制的 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间. ...
- object-C 手动内存管理(MRC)
object-C的内存管理和javascript的垃圾回收不一样,今天总结下手动内存管理,ARC的后边补上. 1:基本铺垫 oc采用引用计数来表示对象的状态,比如通过init创建出来的一个对象引用计数 ...
- 7内存管理-MRC
@0简介 内存管理,即内存里各个对象的管理,即内存里各个对象的生命周期的管理,(从面向对象的角度看) @1引用计数器 默认为1,即有一滴的生命血液,若为0就会死去 @2单个对象的管理 自己管理自己,自 ...
- 【Bugly干货分享】iOS内存管理:从MRC到ARC实践
Bugly 技术干货系列内容主要涉及移动开发方向,是由Bugly邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 对于iOS程序员来说,内存管理是入门的 ...
- iOS阶段学习第20天笔记(MRC内存管理)
iOS学习(OC语言)知识点整理 一.OC中的内存管理 1)概念:内存管理的对象为所有继承了NSObject的对象,对基本数据(如:int .float.double...)无效 OC中采用 ...
随机推荐
- AIDL使用绑定启动远程Service出现Service Intent must be explicit: Intent
Intent intent = new Intent(); intent.setAction("remote.MyRemoteService.Action"); 使用AIDL调用远 ...
- Hadoop组件详解(随缘摸虾)
1.1. Hadoop组成: Hadoop = hdfs(存储) + mapreduce(计算) + yarn(资源协调) + common(工具包) + ozone(对象存储) + submarin ...
- 箭头函数this
箭头函数的this值是由包含它的函数(非箭头函数)来决定的,与包含的函数的this指向一致,如果包裹它的不是函数(直到找到最外层)则this指向全局对象 并且箭头函数的this是固定的,由定义它时所在 ...
- 两表关联更新数据——oracle
from testb b where b.id=a.id) ; (where exists(select 1 from testb b where b.id=a.id):如果没有这个条件,不匹配的选项 ...
- 2016蓝桥杯省赛C/C++A组第七题 剪邮票(暴力+并查集)
题意:有12张连在一起的12生肖的邮票.现在你要从中剪下5张来,要求必须是连着的.(仅仅连接一个角不算相连) 分析:暴力+并查集. 1.记录下每个数字所在位置. 2.先枚举各不相同的5个数的所有可能情 ...
- Arduino - ( Uno、Nano、Promini)针脚示意图
Uno针脚示意图 Nano针脚示意图 Promini针脚示意图
- ping.sh
扫描整个网段 nmap -sP 10.0.0.0/24 #!/bin/bash ps () { ping $1 -c 3 -w 2 |grep -q "ttl" #结果 ...
- 量化投资_Multicharts数组操作函数_append()追加函数(自定义)
1. Multicharts中关于数组的操作比较麻烦,而且当中所谓的动态数组的定义并不是像其他语言那种的概念.因此要对数组进行元素“”追加“”的话,需要重新更改数组的索引,然后再最后一个位置添加val ...
- HTML条件注释判断<!--[if IE] ![endif]-->
很多网页中会见到这样的代码: <!--[if IE 7]> <![endif]--> /*或者*/ <!--[if lt IE 9]> <![endif]-- ...
- leetcode406 ,131,1091 python
LeetCode 406. Queue Reconstruction by Height 解题报告题目描述Suppose you have a random list of people standi ...