ios内存管理机制


iOS 的内存管理机制


注意:在oc语言中是有垃圾回收机制的, 但是在ios中没有垃圾回收机制, 注意二者区别


在IOS中, 内存使用引用计数来进行管理, 它可以看做是一种简单的垃圾回收机制(注意:我是说看做,不要误会哈)

每当在程序中使用了alloc, retain, copy等关键字, 就会使内存引用计数立即+1; release, autorelease会使引用计数-1, 这里要注意, release是立即-1, 而auto lease是在未来的某处进行释放, auto lease要和自动释放池搭配使用.

autorelease的对象会把这个对象放置到离它最近的自动释放池里,自动释放池释放的时候才会把自动释放池中的所有

对象的内存引用计数-1;


记住在对象使用结束后要对它进行释放, 减少内存的占用, 并且alloc, retain, copy是和release或者autorelease成对出现的, 内存引用+1了, 就一定要在某处-1, 保证内存引用计数的平衡


还需要注意的地方就是当对象被添加到容器里时(如数组),内存引用计数会立刻+1;比如


Student*stu = [[Student alloc] init];
NSMutableArray *array = [NSMutableArray array];
[arrar addObject:stu];


当第一步执行时, stu的内存引用计数为1;

但是当你把这个对象添加到数组中时, stu的内存引用计数就为2了;

当stu从数组中取出时, 内存引用计数会-1, 即此时stu内存引用计数就为1了


总结: 在编写程序时一定要计算好内存引用计数是否平衡, 否则很容易造成野指针或内存泄露, 错误提示一般是BAD_EXC_ADDRESS, 这时只要去看看哪里释放过度,将它改正过来即可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值