inout なのかもよくわかんないんだけど、とりあえずそれのおかげで↑の asyncAfter に渡すのはコンパイラが防いでくれる。inout の out の除いたようなものがほしいなぁと。fooAsync { [weak self] in guard let zelf = self else { return } zelf.foo(...) barAsync { [weak zelf] in // ←この [weak zelf] を忘れないようにしたい guard let zelf = zelf else { return } zelf.bar(...) } }