美文网首页iOS原创干货iOS Developer
OC property赋值的正确方式

OC property赋值的正确方式

作者: 我不是段誉 | 来源:发表于2015-10-21 20:10 被阅读607次

今天用一段代码来验证一下正确的property赋值方式

图中被圈出来的两种方式,更为推荐的当然是第二种。

那么第一种有什么问题呢?运行一下你就知道了。

是不是crash了,报错“pointer being freed was not allocated”。

为什么会出错呢,表面看上去所有的“alloc”、“release”使用都没问题啊。

请看最下面注射掉的代码,是不是豁然开朗。

在执行self.a = c这句时,需要先release掉_a之前的值,也就是b。可是b此时已经被release过了且retainCount为0,如何再release一次呢。这都是因为第一次的赋值是用的_a = b,而如果正常用self.a = b赋值的话,b是先被retain过的,就不会出现这个问题。

当然以上所说前提都是在MRC下,常见于老代码,那些早年刚从其他语言转来OC的coder们经常习惯这种写法。所以在改别人的代码或者自己写的时候就要注意了,尽量用规范的方式,以减少之后debug的麻烦。规范不就是用来提高效率的嘛。

相关文章

  • OC property赋值的正确方式

    今天用一段代码来验证一下正确的property赋值方式 图中被圈出来的两种方式,更为推荐的当然是第二种。 那么第一...

  • UIImagePickerController .mediaTy

    先来看最终效果 在OC中的使用方式 在Swift中的使用方式 错误方式,模仿OC的写法 正确方式 实例 在OC使用...

  • Swift :)getter 和 setter

    以前做OC项目的时候,给cell赋值的时候是在model的setter方法里面赋值。 Swift ,用这种方式好像...

  • 52个有效方法(6) - 理解“属性”这一概念

    “属性”(property)是OC的一项特性,用于封装对象中的数据。 @property @Property是声明...

  • OC @property

    @property(属性) 属性是对成员变量setter和getter的封装。 特性关键字 1. 原子性 atom...

  • OC - property

    @property变量 1.@property定义的变量,默认的修饰符是什么? 关于ARC下,不显示指定属性关键字...

  • OC -- @property

    建立一个Person类 @interface --> @end ==> .h中类的声明@implementatio...

  • OC Property

    1、四种写法的区别: PS:注意以下两点: 1>修饰属性问题,小心闪退: 上面的代码会闪退的。相当于以下代码。 正...

  • @property参数

    ARC 1>OC对象类型 @property(nonatomic,strong)类名 *属性名 @property...

  • iOS self.xxx 和 _xxx 的区别

    OC中我们通过@property定义属性 当我们访问变量的时候,可以通过self.xxx 和 _xxx 的方式调用...

网友评论

    本文标题:OC property赋值的正确方式

    本文链接:https://www.haomeiwen.com/subject/muhthttx.html