是否有可能在弱引用的Swift 4元组中创建?
像这样的东西:
let x: (name: weak MyClass, name2: weak MyClass2)
Run Code Online (Sandbox Code Playgroud)
首先,弱变量必须是Optional.其次,正如@Hamish在评论中所说,你不能将元组字段定义为弱.
但是,如果你真的想使用元组,这是一个解决方法
步骤1让我们定义一个包含弱内容对象的包装器
struct WeakWrapper<Element:AnyObject> {
weak var value:Element?
init(_ value:Element) {
self.value = value
}
}
Run Code Online (Sandbox Code Playgroud)
第2步你的2个班级
class MyClass1 {
deinit {
debugPrint("Deinit MyClass1")
}
}
class MyClass2 {
deinit {
debugPrint("Deinit MyClass1")
}
}
Run Code Online (Sandbox Code Playgroud)
第3步这是我们定义元组的方式
let x: (name0: WeakWrapper<MyClass1>, name1: WeakWrapper<MyClass2>)
Run Code Online (Sandbox Code Playgroud)
第4步这就是我们填充它的方式
x = (name0: WeakWrapper(MyClass1()), name1:WeakWrapper(MyClass2()))
Run Code Online (Sandbox Code Playgroud)
步骤5我们创建的MyClass1和MyClass2类型的对象对象将在下一行解除分配,因为它们没有强引用
"Deinit MyClass1"
"Deinit MyClass1"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
437 次 |
| 最近记录: |