この回答は、 Martin R の回答ほどコールバックのトピック固有のものではありませんが、役立つ可能性があります...
&
通常、演算子を使用して、安全でない void ポインターに任意の型の値を渡すことができます。
func baz(p: UnsafeMutablePointer<Void>) -> String {
return "\(p)"
}
var num = 5
print(baz(&num))
ただし、渡すには、変更可能なself
コンテキストで渡す必要がありますself
。つまりinit
、参照型ではなく、値型の変更メソッド (または ) でこれを行う必要があります。
struct FooValue {
mutating func bar() {
print(baz(&self))
}
}
var myFooValue = FooValue()
myFooValue.bar()
参照型を使用する場合は、参照のローカル コピーを作成し、それへのポインターを渡す必要があります。
class FooReference {
func bar() {
var localSelf = self
print(baz(&localSelf))
}
}
let myFooReference = FooReference()
myFooReference.bar()