i support this™ On Wed, Oct 25, 2017 at 6:41 AM, David Hart via swift-evolution < swift-evolution@swift.org> wrote:
> I got bit again by a sneaky memory leak concerning local functions and > would like to discuss a small language change. I vaguely remember this > being discussed in the past, but can’t find the thread (if anybody could > point me to it, I’d appreciate it). Basically, here’s an example of the > leak: > > class A { > func foo() { > func local() { > bar() > } > > methodWithEscapingClosure { [unowned self] _ in > self.bar() > local() // this leaks because local captures self } > } > > func bar() { > } > } > > > Its sneaky because local’s capturing of self is not obvious if you’ve > trained your brain to watch out for calls prefixed with self. I would > suggest having the compiler force users to make self capturing explicit, > the same way it does for closures: > > class A { > func foo() { > func local() { > bar() // error: Call to method ‘bar' in function ‘local' requires > explicit 'self.' to make capture semantics explicit > } > // ... > } > } > > > What do you think? > > David. > > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution > >
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution