关于iOS中ARC机制的理解

         ARC是苹果公司在iOS4.3之后才出现的内存管理机制,全名为: ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。但其又有别于java,c#的自动垃圾回收机制。甚至在本人理解中,觉得ARC更优于JVM一些。

       在ARC中又引入了两个关键字:strong,weak,

强指针:strong,对应手动内存管理的retain关键字

        @property(nonatomic,strong)NSString * name;

弱指针:weak,对应手动内存管理的assign关键字,

        @property(nonatomic,strong)NSString * card;

        当然,也不是说在ARC模式下,assign关键字完全被weak取代,在基本数据类型中,我们还是需要使用到assign,而strong,weak一定都是应用在对象类型变量上。

       @property(nonatomic,assign)int age;

总结:

        1.只要有强指针(strong)指向一个对象,那么系统就不会回收该对象

        2.只要没有强指针(strong)指向一个对象,系统立即回收该对象。(这就是ARC与JVM的区别,JVM是一种分配机制,当内存没有压力的时候,是不会回收对象)

        3.弱指针(weak)不影响对象被回收

        4.默认情况下,所有的指针都是强指针类型的。 

注意:

  •      1.代码中不能再手动调用 retain, release, retain, autorelease
  •      2.不重载dealloc方法,但是如果是释放对象内存以外的处理,是可以重写该函数的,但是不能调用[super dealloc]
  •      3.不能使用NSAllocateObject, NSDeallocateObject
  •      4. id与void *间的如果cast时需要用特定的方法(__bridge关键字)
  •      5.不能使用NSAutoReleasePool、而需要@autoreleasepool块
  •      6.不能使用“new”开始的属性名称 (如果使用会有下面的编译错误”Property’s synthesized getter follows Cocoa naming convention for returning ‘owned’ objects”


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值