[swift-evolution] [Draft Proposal] A simplified notation for avoiding the weak/strong dance with closure capture lists

Jason Gregori jasongregori at gmail.com
Fri Feb 12 14:08:24 CST 2016


What about dropping "guard"? [reconstitute self] (I'll look in the thesaurus later today). 

> On Feb 12, 2016, at 11:57 AM, Jonathan Tang <jonathan.d.tang at gmail.com> wrote:
> 
> +1 to the proposal as it stands, including dropping the "else" or extending to non-void closures.  If they turn out to be a problem, another proposal could be written for them at a later date.
> 
> I don't really like the idea of adding another word in there, either [guard weak self] or [guard reconstitute self].  To me, [guard self] is another capture semantics, just like [weak self] and [unowned self], and I find it easier to remember if I can mentally put it in the set of capture semantics than if I mentally hang it off of [weak self] as a special case.  I don't think there's any reasonable phrase that will explain exactly what this does without people having to spend a few minutes reading the manual and absorbing the information, so I'd rather optimize for conciseness for those who've done this rather than clarity for those who haven't.
> 
>> On Fri, Feb 12, 2016 at 11:08 AM, Jason Gregori via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> 
>>> On Fri, Feb 12, 2016 at 10:34 AM, Erica Sadun <erica at ericasadun.com> wrote:
>>> How about 
>>> 
>>> guard reconstitute self else { return }
>> 
>> I like the idea behind this but I feel like a line inside the block can't really dictate whether self is captured weakly or not. Unless your saying put this in the bracket part?
>> 
>> [guard reconstitute self] ? That works for me.
>> 
>> 
>> PS: I got here from your blog post, thanks!
>>  
>>> -- E
>>> 
>>>> On Feb 12, 2016, at 11:28 AM, Jason Gregori via swift-evolution <swift-evolution at swift.org> wrote:
>>>> 
>>>> I like Kenny and Kurt's points about handling the majority case and keeping the syntax simpler.
>>>> 
>>>> I feel like most of the time I want to break a retain cycle is for a completion block which returns void. Can we just handle that case and get rid of the else?
>>>> 
>>>> Also, I don't think [guard self] is self explanatory enough. I think weak should be in there so it's much more obvious you are doing the weak/strong dance with self, otherwise it looks like you are guarding against a regular optional being nil.
>>>> 
>>>> So:
>>>> 
>>>> [guard weak self, other]
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution at swift.org
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> 
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160212/b8275125/attachment.html>


More information about the swift-evolution mailing list