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

Jonathan Tang jonathan.d.tang at gmail.com
Fri Feb 12 13:57:35 CST 2016


+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/cd62a990/attachment.html>


More information about the swift-evolution mailing list