我很好奇下一个代码是否会导致强大的参考周期?
enum Type {
case some(obj:Any)
}
class Entity {
var type:Type
init() {
type = Type.some(obj:self)
}
}
Run Code Online (Sandbox Code Playgroud)
是.Any隐含着强烈.如果您传递引用类型,它将是一个强引用.它不是一个"循环",因为没有"保留"枚举,但只要值存在(或值的任何副本),它将保持Entity并防止它被释放.
想象一下,如果不是这样的话.会.some(obj: NSObject())包含什么?如果Type.some没有增加保留计数,那NSObject就会消失.(因为这非常类似于a Optional,这将是非常令人惊讶的,因为许多人T?会立即成为nil.)
顺便说一下,通过创建deinit方法可以轻松有效地探索这个问题Entity.
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |