2024-10-13 19:53:52
有好几种情况
第一个是在
func function(completion: @escaping (Int) -> String) {
...
}
var b = 1
function { _ in
// 修改变量
b = 100
return ""
}
第二种是使用
func function( completion: @escaping (Int) -> Int ) -> Int {
...
}
let x = function { a -> Int in
return a * 2
}
第三种是指针传递,我估计你可能希望要这个东西:
// 假设当前类的引用为self,其类型为SomeClass
let this = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque())
// 另外假定someFunctionType是某种C语言的传统函数,需要传递指针变量p用于修改目标对象类
let someFunction: someFunctionType = { p in
let q = Unmanaged<SomeClass>.fromOpaque(p!)
let me = q.takeUnretainedValue()
// 此时me 已经相当于是self对象了,可以直接使用并修改其内容
}