这个星期把项目已经交差了,比较清闲,突然想回温一下这个几个修饰符,所以写了一下。
1.assign:
这个玩意只能修饰基本类型,记得刚刚接触的时候,总是好奇为什么都是
差不多的,为什么它不去修饰对象呢,现在我解释一下,assgin可以修饰对象
,但是当它释放的时候,地址不会重置为nil,它修饰基本类型是可以,
因为它们存在栈中,和堆没有关系,遵循先进后出原则,
所以还是用它老老实实修饰基本类型。
2.copy:
复制不可变文本,就是复制的是值而不是地址,赋值的时候,旧的值不变,
一般用于修饰NSString类型和block,当初刚刚接触的时候,我就是不相信,
我就想让它修饰可变文本,例如mutableArray,结果,当我给它增加值的时候
,新的值存在新的地址中,原来的值未变,得到的是新的值,直接心碎的感觉,
有这样的一次经历,我就老实了,当然当我们想让NSString都改变的话我们设置为strong,
前提是我们用mutable,这样我们更改的nssting会随着后面的改变,
前面的也会发生改变。
3.strong:
复制可变的文本,一般用来修饰出string和block之外的oc对象,
赋值的时候,地址相同,值当然也相同。
4.week:
当不用的时候,地址直接赋值为nil,所以地址再次被引用的时候,不会崩溃,
一般用来修饰代理,防止由于strong引起的相互引用。
对于strong和copy:strong 相当于办公室的灯,只有最后一个人走的时候,
灯才会被关闭,对象才会释放。copy相当于我们看到的灯光,
无论谁关闭了它,它就不会再亮了。
关于assign,copy,strong, week的区别
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近有同学问我关于属性@property()的关键字assign,weak,strong,copy区别,这里总结一...
- 1.assign 与weak区别 assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个...
- iOS中assign,copy,retain之间的区别以及weak和strong的区别 :http://blog...
- • copy: 用于希望保持一份传入值的拷贝,而不是值自身的情况,即把原来的对象完整的赋值到另外一地方,重新加载一...
- 商业价值的本质------趋势、流量、包装、产品、重复性消费、相应成本 整理的一些资料: 套路,套路,都是套路!这...