oc的成员变量的属性

本文介绍iOS5中引入的strong和weak关键字,解释它们如何替代原有的retain和assign,并探讨了__weak、__strong、__unsafe_unretained及__autoreleasing等修饰符的作用。此外还提及ARC模式下内存管理的变化。
摘要由CSDN通过智能技术生成

今天将谈谈IOS 5中新增的strong和weak关键字

strong 用来修饰强引用的属性,只要有个strong指针指向该变量内存就不会被释放;
@property (strong) SomeClass * aObject; 
对应原来的 
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;

weak 用来修饰弱引用的属性,即使有weak指针指向改变量,而没有strong指针指向他时,照样释放,常用于控件,因为控件的内存一般由view去维护,当将控件加入一个viewcontroller时,其实调用了[self.view addsubview];这个时候该控件的counter已经自动加一了
@property (weak) SomeClass * aObject; 
对应原来的 
@property (assign) SomeClass * aObject;

__weak, __strong 用来修饰变量,此外还有 __unsafe_unretained, __autoreleasing 都是用来修饰变量的。
__strong 是缺省的关键词。
__weak 声明了一个可以自动 nil 化的弱引用。
__unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。
__autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。

在arc模式下只能使用weak 和 strong,非arc模式下使用retain和assign,其实两者是相等的。

原子性和非原子性用于线程同步时是否加锁,此处不做阐述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值