> On Jun 30, 2017, at 1:47 PM, Mike Ferenduros via swift-users
> <[email protected]> wrote:
>
> I'm doing a RAII sort of thing with an object, and would like to keep it
> alive until an completion-block is called (asynchronously).
>
> Is it sufficient to say '_ = x' in the completion-block to keep a live
> reference to the object?
>
> I was told that the optimiser is free to discard this line, and thus the
> object could be freed prematurely depending on how the code is compiled. If
> so, is there an idiomatic way to do this? Or should I just avoid RAII in
> Swift?
Nope. In fact, if you try this, you’ll find that it dies immediately after the
initializer returns:
class C {
deinit { print("Deinit!") }
}
do {
print("Creating")
_ = C()
print("Created")
}
print("Left the block”)
- - - - -
Creating
Deinit!
Created
Left the block
Charles
_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users