iOS 之内存管理

本文详细阐述了内存管理的基本原则,包括谁创建谁释放、 autorelease 的使用、局部及全局变量的管理方式等,并介绍了 retain、assign 和 copy 的区别及其应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内存管理:谁创建,谁释放,谁引用,谁管理。

加号方法的实质:减号方法创建对象,然后掉用一个autorelease,把这个创建的对象的内存交给系统管理。

局部变量内存在不用的时候进行释放,全局变量在dealloc方法中对他进行释放。对象被释放掉后会调用dealloc方法。

1.局部变量的内存管理:不用的时候对它进行释放。

2.全局变量内存管理:dealloc方法里面进行释放。

3.由加号方法创建的对象不用对它进行内存管理。

4.加号方法的实质是:减号方法创建然后调用auto release方法把这个对象交给系统管理。

5.retain:对象类型的用它来修饰并且会使引用计数加一,assign:非对象类型的用它来修饰,copy:用来修饰字符串的,也会使引用计数加一。


  • assign:普通赋值,一般常用于基本数据类型,常见委托设计模式, 以此来防止循环引用。(我们称之为弱引用).
  • retain:保留计数,获得到了对象的所有权,引用计数在原有基础上加1.
  • copy:一般认为,是在内存中重新开辟了一个新的内存空间,用来 存储新的对象,和原来的对象是两个不同的地址,引用计数分别为1。但是当copy对象为不可变对象时,那么copy 的作用相当于retain。因为,这样可以节约内存空间


-(void)setPeople:(people *)p

{

    if(_p !=p)

   {

      [_p release];

      _p = [p retain];

   }

}

6.属性内存管理:在dealloc方法里面进行self.xx = nil;

7.添加到数组里面会使引用计数增加,push,模态弹出,addsubView,都会使引用计数增加的。

8.定时器,在界面消失的时候将定时器废除。

9.通知,注册一个通知的话要进行移除在dealloc方法里面进行移除。



文章有部分内容摘录自 https://juejin.im/entry/57cc1a68165abd0068efa563

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值