Awesome, thanks :)

> On 30 Jun 2017, at 22:27, Joe Groff <jgr...@apple.com> wrote:
> 
> 
>> On Jun 30, 2017, at 12:25 PM, Mike Ferenduros <mike.ferendu...@gmail.com> 
>> wrote:
>> 
>> 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.
> 
> I see. Using `withExtendedLifetime` inside the closure still ought to 
> guarantee that the closure captures the variable, and will have the effect of 
> keeping it alive till the closure dies.
> 
> -Joe
> 
>>> 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

Reply via email to