ios - Swift ARC 困惑
问题描述
我一直在尝试跟进 Swift 官方文档,并尝试查看他们提供的自动引用计数示例。在他们的示例中,他们试图展示如何使用弱引用来避免强引用循环。
import UIKit
class Person {
let name: String
init(name: String) { self.name = name }
var apartment: Apartment?
deinit { print("\(name) is being deinitialized") }
}
class Apartment {
let unit: String
init(unit: String) { self.unit = unit }
weak var tenant: Person?
deinit { print("Apartment \(unit) is being deinitialized") }
}
var john: Person?
var unit4A: Apartment?
john = Person(name: "John Appleseed")
unit4A = Apartment(unit: "4A")
john!.apartment = unit4A
unit4A!.tenant = john
john = nil
print("Strong ref cycle")
正如文档中所述,当我们将 nil 分配给 john 引用时,它应该调用 deinit,因为没有更多的强 ref 分配给它。但是当我运行上面的示例时,它不会打印该语句。不确定是什么问题。对我的理解是否有一些困惑或发生了其他事情?
解决方案
推荐阅读
- javascript - 快乐算法的功能没有正确重复
- c++ - 使用指向抽象基类的指针时,是否有更有效的方法来获取派生类的类型?
- react-native - 构建 Apk 文件与 react-native 中的调试 APK 文件工作不同
- jquery - jQuery:期望赋值或函数调用,而不是看到 ifelse 短语句的表达式?
- java - 在访问事件文件之前等待 WatchService 事件完成处理
- linux - 如何在汇编程序中打开文件并打印其内容?
- python - 在 Windows 10 上的 Python 2.7 中创建 virtualenv,而其他 virtualenv 在 Python 3.8 中工作
- google-cloud-platform - 如何正确查看 bigquery 作业元数据?INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION
- parsing - FLEX/YACC 程序未按预期运行:无法从整数序列中获取整数值
- angular - Angular 和 Firebase 云函数返回 null