Objective-C 内存管理 蓝懿教育

一、内存管理笔记

1OC内存管理,管理堆栈内存,主要管理对象是堆内存。

2、内存计数:有指向它的,它的计数则加一。或者说有人引用它,计数加一。



3、没有人引用之后,内存计数为0.对象被销毁。内存被释放。

ARC 编译器自动加release 自动内存管理 对局部变量出括号,自动减1.

mrc 手动内存管理。

[a1 release] 释放一个,内存计数减一。


二、所有对象引用计数为0时,要释放内存的时候,都将调用:方法 dealloc

上课以微信打飞机,为内存管理实例。讲解了当敌机被打死的时候,应该释放内存。检查所有对敌机对象有引用的位置,当所有地方都正确的释放,那么,Hero打死敌机,就会进入dealloc方法,此时可以在dealloc方法中输出一下,若做到了正确的内存管理,内存没有泄露,则将有敌机死了输出。



ARC的原则是:谁加,谁负责减。

内存计数加一的情况

1alloc命令会导致内存计数加一。

则是:谁加,谁负责减。


2

eg:

[[self.view addSubView:]]添加到界面 内存计数会增加 不确定个。

[[self.view addSubView:]] +1

[e removeFromSuperView];  -1

3

加到数组

从数组减。

4

timer 为确保针对对象的方法调用成功

也要对 对象进行引用。




三、属性括号中的关键字,用来控制SetGet方法中得内容。


retainstrong :Set方法做两件事①把原来的值 release -1②把新传递进来的值 retain +1

e.g.:  self.enemy 为什么 self.enemy =[ [nsmutablearray alloc]init] ;需要加一

alloc +1

self.enemy Set方法+1


assignweak) Set 方法做一件事

把传递进来的值 赋值给全局变量,和内存计数无关。基本数据类型用 assign。默认为assign


为什么要减一

eg.:

self.enemy =[ [nsmutablearray alloc]init]+2


self.enemy =[ [nsmutablearray alloc]init]


releasestrong

self.a = [[uilable alloc]init];+2

自动内存管理会 -1.用到的同一个变量.如果是retainstrong),会再减一。

self.a = [[uilable alloc]init];


例子:

一个人一次只能放一个风筝。

在放 新的风筝时 必须把老风筝收回来。再放新的。

如果不收回来。就放新风筝,那么老风筝就像一下放走让它走了,去污染环境了。


转载于:https://my.oschina.net/u/2450944/blog/501451

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值