Immutable value as inout argument
You could send the pointer when initializing the object:
class MyClass {
var valuePointer: UnsafeMutablePointer<AnyObject?>
init(value: inout UnsafeMutablePointer<AnyObject?>) {
self.valuePointer = value
}
}
Just add the pointer reference when initializing MyClass
:
let obj = MyClass(value: &obj2)
For those who has the cannot pass immutable value as inout argument
error. Check that your argument is not optional first. Inout type doesn't seems to like optional values.
For someone faced the same issue with me:
Cannot pass immutable value as inout argument: implicit conversion from '' to '' requires a temporary
The code as below:
protocol FooProtocol {
var a: String{get set}
}
class Foo: FooProtocol {
var a: String
init(a: String) {
self.a = a
}
}
func update(foo: inout FooProtocol) {
foo.a = "new string"
}
var f = Foo(a: "First String")
update(foo: &f)//Error: Cannot pass immutable value as inout argument: implicit conversion from 'Foo' to 'FooProtocol' requires a temporary
Change from var f = Foo(a: "First String")
to var f: FooProtocol = Foo(a: "First String")
fixed the Error.