[swift-evolution] [Proposal] Allow upgrading weak self to strong self by assignment

Kurt Werle kurt at circlew.org
Fri Feb 19 16:03:37 CST 2016

On Fri, Feb 19, 2016 at 1:39 PM, Shawn Erickson via swift-evolution <
swift-evolution at swift.org> wrote:

> For example [guard self] capture option supports one specific situation
> without the ability of the block to take alternate actions in the situation
> of weak self being nil and also requiring no return blocks. This is great
> obviously for that particular situation however it doesn't really help with
> the other situations.

That's the beauty of it.  If you want to do something else, this isn't what
you want.  This is just a simple bit of sugar to get rid of the very common
use case where you have a nilable/void callback that you only want executed
if self is not nil.

If you want/need to do something more complicated, then
{ [unowned self] in
  guard self != nil else {
    Do the other thing
is great.  It's not boilerplate because you're doing something useful in
the else case.

I do still prefer the [unowned self]? syntax, though.  It feels so similar
to object?.doSomething().  If the lvalue is nil, you get nothing!

kurt at CircleW.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160219/ff3204c0/attachment.html>

More information about the swift-evolution mailing list