Ah, I think I was unclear - I want to extend the lifetime into an escaping closure, not just within a scope, and I was wondering what the minimal way is to do that.
> On 30 Jun 2017, at 22:15, Joe Groff <jgr...@apple.com> wrote: > > >> On Jun 30, 2017, at 12:13 PM, Mike Ferenduros <mike.ferendu...@gmail.com> >> wrote: >> >> With an empty body, you mean? > > I'd say it's probably more readable to nest the code that's dependent on the > lifetime of the object in the block body, though you can just put > `withExtendedLifetime(x) { }` at the end of the region (or `defer { > withExtendedLifetime... }` at the beginning) if you can't have the nesting > for whatever reason. > > -Joe > >>> On 30 Jun 2017, at 22:00, Joe Groff <jgr...@apple.com> wrote: >>> >>> >>>> On Jun 30, 2017, at 11:47 AM, Mike Ferenduros via swift-users >>>> <swift-users@swift.org> 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? >>> >>> `withExtendedLifetime(x) { ... }` is the supported way of extending the >>> lifetime of an object. >>> >>> -Joe > _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users