iOS开发-OC中属性创建需要注意的地方(property实例变量的创建和标准存取方法)

http://blog.csdn.net/werctzzz/article/details/52120513 转载请标明出处


现在很多iOS开发人员都存在很大水分,包括我之前的几任拍档和面试过的人

很多人连 property 属性的创建是为了什么都不清楚就瞎用,导致项目莫名崩溃

而他们却还找不到为什么崩溃。


今天就来说说property 创建时候的内存管理:

@property (assign)

assign 

属于ARC的内存管理模式,但是意味着不保留实例变量,也不在销毁之前把该对象设成nil。

@property ( retain)

retain

在内存管理中,会保留而且释放实例变量,常用在MRC中,会在销毁之前把对象变为nil。

@property ( strong)

strong

和retain相同的是,会保留并且释放实例变量,会在销毁之前nil,但是strong常用语ARC中

属于强引用类型,意味着是对象的默认设置。

@property ( copy)

copy

多说一点,在创建容器类的对象属性,一定要用copy,能减少很多崩溃以及传值为空的现象

作用是保留并释放实例对象,销毁前设置为nil。☆在设置实例变量时会进行复制,要注意着不

是将指针赋值。

@property ( weak)

不保留实例对象,属于弱引用类型,但是在销毁之前也会nil。


在创建属性的时候,要明确这些属性用到什么地方,需要传什么值,以及内存管理的问题

给一个建议就是能用类自己的成员变量尽量用成员变量,如果涉及到多页面传值、block

或是属性在别的类需要调用,再使用属性,内避免很多问题。


再说一个属性中重要的东西:

@property (nonatomic,assign)和@property(atomic,assign)两个属性中的atomic 和nonatomic是什么鬼呢?

在属性创建的时候,默认是atomic ,atomic的意思就是命令编译器加锁,让属性能够同时被多个线程安全访问。

如果不需要这个加锁机制,那就是nonatomic,让编译器不生成加锁代码,一般在银行项目中会使用到atomic,主

要防止属性传值被人截获






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值