黑马程序员——OC语言ARC

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------
自动回收内存机制。
优点:不需要人为添加内存管理代码,提高了编程效率与安全性。
1.概念:编译器会自动在适当的地方插入适当的retainreleaseautorelease语句。(属于编译器特性

2.ARC的判断标准: 
     只要没有强指针指向对象,就会释放对象。
       eg: Person *p = [[Person alloc] init];
              p = nil;
        代码解析:默认情况下,p是强指针。当p等于空时,就没有强指针指向Person对象,这时候编译器会自动将Person对象销毁。

   (1)强指针:默认情况下,指针都是强指针(__strong)
   (2)弱指针: __weak 修饰  
                  eg: __weak Person *p2 = p ; (p2就是个弱指针)

3. ARC特点:
   (1)不允许手工调用release、retain、autoretain。
   (2)允许重写dealloc,但是不允许调用[super dealloc];
   (3)@property参数
           strong:成员变量是强指针,相当于以前retain(使用OC对象)
           weak:成员变量是弱指针,相当于以前assign(使用OC对象)
           assign:基本数据类型,直接赋值。(使用非OC对象)
    (4)以前的retain,全部改为strong,其余不变 
             eg: @property (nonatomic,retain) Car *car;
             改为:@property (nonatomic,strong) Car *car;

4.某.m文件不需要ARC方法
   不需要ARC: 添加-fno-objc-arc
      
   需要ARC:-f-objc-arc
 
5.解决循环引用问题
  1>ARC
    一端用strong,一端用weak
     eg: Dog 端 : @property (nonatomic,strong)   Person *person;
               Person端:@propertor (nonatomic,weak) Dog *car
    

  2>非ARC
        一端用retain,一端用assign
     eg: Dog 端 : @property (nonatomic,retain)   Person *person;
            Person端:@propertor (nonatomic,assign) Dog *car

6.总结
  ARC最大的优点就是极大的提高了程序编写效率,开发者不需要关心对象的销毁时间,不需要担心程序的内存泄漏问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值