Mos*_*she 17 memory-management objective-c ios automatic-ref-counting
自动引用计数(ARC)引入了一些新的类型限定符.我见过__strong和__weak,但他们做什么?
Jac*_*kin 32
__strong表示在赋值时,表达式的rvalue将被保留并使用原始语义存储到左值中.(要解除分配这样的对象,你必须做的就是分配它nil,先前引用的对象将被释放,nil将被保留,这实际上什么都不做,它是桃子和奶油.)
__unsafe_unretained并且__weak在rvalue的地址将被赋值给左值的意义上是相似的,但是如果使用__weak限定符,则此操作保证是原子的并且受到一些不同的语义的影响.其中之一是,如果正在分配的对象当前正在进行释放,则赋值将评估为nil,然后将原子地存储回表达式的左值.因此措辞__unsafe_unretained,因为该操作确实是不安全和无法保证的.
__autoreleasing就像__strong它有一个警告:保留的对象被推送到当前的自动释放池,因此您可以获取对象的临时所有权以将其从集合中删除,然后将其返回给调用者.还有其他用途,但它们主要与获取对象的临时所有权有关.
这些行为也会出现在相应的属性修饰符(strong,unsafe_unretained和weak)中.
编辑:对于那些没有以iOS 5为目标并因此无法获益的人__weak,Mike Ash撰写了一篇精彩的文章(和实现),介绍了可以使用的弱引用.
| 归档时间: |
|
| 查看次数: |
4480 次 |
| 最近记录: |