OC中手动管理内存

//1.对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount
= 0的时候,系统会毫不犹豫回收当前对象

//2.[对象 release]  reatinCount - 1

//3.[对象 retain]   reatinCount + 1
,返回self

//4.我们的引用计数retainCount = 0的
对象就被销毁了

//5.dealloc函数,当一个对象要被销毁的时候,系统会自动调用dealloc函数,通知对象你将要被销毁

内存管理原则:只要出现了new alloc retain ,就一定配对出现一个release

OC中手动管理内存,布布扣,bubuko.com

时间: 2024-08-09 05:53:13

OC中手动管理内存的相关文章

内存管理一道数组存储例题存储精讲! (oc手动管理内存,引用计数器)

//定义一个bigArr数组, NSMutableArray *bigArr = [[NSMutableArray alloc] init]; //引用计数0 - 1 //此时只是定义了一个smallArr 并没有开辟空间,所以引用计数不加一 NSMutableArray *smallArr = nil; for (int i = 0 ; i < 13 ; i++ ) { if (i % 3 == 0 ) { // 0 3 6 9 12 //此时为smallArr数组开辟了空间, smallAr

OC中如何对内存进行管理的

OC中的内存管理主要由三种方式ARC(自动内存计数),手动内存计数,内存池: 1)ARC:这种方式和java类似,在你的程序的执行中,始终有一个高人在你背后准确的帮你收拾垃圾,你不用考虑它什么时候开始工作,怎么样工作,你只需明白,我申请了一段内存空间,当我不再使用从而这段内存成为垃圾的时候,我就会彻底把它忘掉了,反正那个高人会帮我们收拾垃圾的,但遗憾的是,那个高人需要消耗一定的资源,在携带设备里面,资源是紧俏商品,所以iPhone不支持这个功能. 解决:通过alloc-inital方式创建的,创

IOS面试题目-----oc 是如何管理内存的《Z》

一 基本原理 Objective-C的内存管理机制与Java那种全自动的垃圾回收机制是不同的,它本质上还是C语言中的手动管理方式,只不过稍加了一些自动方法. 1,OC采用了引用计数(retain count)对对象内存进行管理,例如,某个对象alloc了,那么这个对象的引用计数就加1,retain时加1,当对象不需要用时就需要销毁对象,释放内存,需要对象调用release方法,release会让引用计数减1,只有引用计数消失,相当于等于0,对象才会调用dealloc真正销毁这个对象. OC的对象

OC中属性的内存管理

在MRC模式下,我们建一个Person类的对象.h文件如下 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 @property (nonatomic, retain)NSString *name; 5 @property (nonatomic, retain)NSString *sex; 6 @property (nonatomic, assign)NSInteger age; 7 //自定义初始化

小结OC中Retain cycle(循环引用)

retain cycle 的产生 说到retain cycle,首先要提一下Objective-C的内存管理机制. 作为C语言的超集,Objective-C延续了C语言中手动管理内存的方式,但是区别于C++的极其非人道的内存管理,Objective-C提出了一些机制来减少内存管理的难度. 比如:内存计数. 在 Objective-C中,凡是继承自NSObject的类都提供了两种方法,retain和release.当我们调用一个对象的retain时,这个 对象的内存计数加1,反之,当我们调用rel

iOS-旧项目中手动内存管理(MRC)转ARC

在ARC之前,iOS内存管理无论对资深级还是菜鸟级开发者来说都是一件很头疼的事.我参 加过几个使用手动内存管理的项目,印象最深刻的是一个地图类应用,由于应用本身就非常耗内存,当时为了解决内存泄露问题,每周都安排有人值班用 Instruments挨个跑功能,关键是每次都总能检查出来不少.其实不管是菜鸟级还是资深级开发者都避免不了写出内存泄露的代码,规则大家都懂,可是 天知道什么时候手一抖就少写了个release? 好在项目决定转成ARC了,下面将自己转换的过程和中间遇到的问题写出来和大家共享,希望

黑马程序员--Objective-C之--OC中的内存管理

对于面向对象的变成语言,程序需要不断地创建对象. 初始,创建的所有程序通常都有指针指向它,程序可能需要访问这些对象的实例变量或调用这些对象的方法,随着程序的不断执行,程序再次创建了一些新的对象, 而那些老的对象已经不会再被调用,也不再有指针指向他们,如果程序没有回收他们占用的内存,就会出现内存泄露. 如果程序一直泄露内存,那么可用内存就会越来越少,直到没有足够的内存,程序將会崩溃.目前,主要有两种管理内存的技术,一是引用计数,二是垃圾回收. iOS平台目前只支持引用计数,Mac平台支持垃圾回收.

简述OC中内存管理机制

1.OC的内存管理机制是引用计数, 内存管理原则是谁开辟谁释放, 有retain就要有release. 2. 分为ARC(自动引用计数)和MRC(非自动引用计数), 在MRC下, 我们需要手动管理内存,需要使用到retain/copy/release/autorelease等方法实现内存管理, ARC下一般不需要程序员手动管理内存, 系统会为程序添加自动释放池以实现内存管理, 当然, 咱们说的一般不需要不能理解为完全不需要考虑内存问题, 比如在解决block循环引用问题的时候, 就需要使用__w

【OC基础】03-OC内存管理

概述 跟Java和C#类似,OC创建的对象在堆上.与Java和C#不同的是Java和C#有垃圾回收机制,所以不需要程序员手动释放堆上的内存.而OC没有垃圾回收机制,必须手动管理内存的创建和释放.下面介绍一下OC内存管理内存管理的方式. 引用计数器 OC管理内存的方式类似C++中的智能指针,创建一个对象时,在ObjC中每个对象内部都有一个与之对应的整数(retainCount),叫“引用计数器”,当一个对象在创建之后初始化它的引用计数器为1,当调用这个对象的alloc.retain.new.cop