A hardcore Swift question I guess. Given this trivial code:
struct Container {
let closure: (Int) -> Void
}
let container = Container { param in
print("\(param)")
}
One can assume calling container.closure(42) will print out 42, which is true.
However, if this same closure is retrieved from the container's Mirror:
let mirror = Mirror(reflecting: container)
let closure = mirror.children
.first(where: { $0.label == "closure" })!
.value as! ((Int) -> Void)
... then calling closure(42) distorts the parameter's value, and it prints out 6166589480.
The same thing happens if you use String instead of Int, and I assume with other types too. If I pass a reference to an object, expectedly that reference get messed up too and I get EXC_BAD_ACCESS when trying to access the object.
Is this a bug in Swift / Xcode 13.2 or am I missing something?
Aucun commentaire:
Enregistrer un commentaire