ARC学习记录

strong和weak 默认情况下,所有的实例变量和局部变量都是 strong 指针。strong指针表示拥有了所指对象的所有权,weak指针却没有所有权,当一个对象的所有者计数为0时,自动释放。 如典型的delegate就是weak指针,指向ViewController对象vc,当vc引用计数为0时就会释放,delegate也就为nil。

IBOutlet 使用strong还是weak? 在 ARC 中,一般outlet属性都推荐使用 weak,这个视图已经是视图控制器视图层级中的一部分了, 不需要在其他地方 retain 了。 声明 weak 的好处是, 省去了自己在viewDidUnload方法中添加self.xxx = nil。唯一需要声明为 strong 类型的 outlet 属性,就是在 nib 中从 File’s Owner 连接到顶级对象的那个。什么是File's Owner连接到的顶层对象呢?就是自定义的view(注意!),不是直接作为main view里面一个sub view直接显示出来,而是需要通过实例化创建出来的。你自己实例化,当然需要strong了,不然谁还替你保留对象所有权呢?

ARC其他属性的规则: strong:等同于"retain",属性成为对象的拥有者 weak:属性是 weak pointer,当对象释放时会自动设置为 nil unsafe_unretained:等同于之前的"assign",只有 iOS 4 才应该使用 copy:和之前的 copy 一样,复制一个对象并创建 strong 关联 assign:对象不能使用assign,但原始类型(BOOL、int、float)仍然可以使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值