内存管理

下面是我自己结合项目对内存管理的一些总结:


一:临时变量

      对于临时变量比如 UILabel *label=[[UILabel alloc]init]; 之后 赋值给其它变量不在使用时 要 释放 [label release];

      当然也可以通过自动释放池进行释放 例:UILabel *label=[[[UILabel alloc]init]autorelease];


二:属性变量

     公有属性变量:最好在 .m文件中 @synthesize 变量名称

     然后初始化公用属性时:用@synthesize 变量名称 中的变量名进行初始化 或者 创建一个临时变量 再将临时变量赋值给 公用属性变量      然后再将临时变量给释放掉!


    私有属性变量:再初始化使用属性变量时 直接用 私有属性变量名 进行私有属性变量的初始化


   公用属性和私有属性的内存的释放:统一在 -(void)dealloc{};中释放 ,一般各个对象例:[tableView realease];就可以了 也可以 现将对象置空 在释放:[tableView realease]; tableView=nil;

 后者比较保险,不易产生 野指针 比较安全!


三:对于返回对象的内存释放:在创建的适合 通过[[XX alloc]init]autorelease] 的方式进行初始化!


四:对于互相引用的属性,在mrc中其中一个采用 (nonatomic,assign)id delegate; 来避免循环引用造成的内存泄露!


五:对于代码块的使用:因为 block中会直接访问self对象,当 self对象本身持有block对象时就会出现循环引用的问题!

      这类问题的解决方案:用临时变量接收self.属性值 然后直接使用临时变量的值 就可以了  或者:

      用到 self的地方 将其变成 __block__weak  弱引用类型即可!


六:对于工程中创建的通知对象:一定要在-(void)dealloc{}中 或 -(void)viewWillDisappear{}中进行通知的移除

      通知的移除:可以对单个具体通知进行移除 或者 将所有通知都移除掉:[【NSNotificationCenter defaultCenter】removeObserver:self] 进行移除!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值