<div dir="ltr">Are there warnings/diagnostics that could call out when local variables shadow properties? I generally like that `self` is optional and prefer limiting its use to explicitly call out potential retain cycles. Xcode also makes it easy to introspect variable scope, though Xcode is less of a requirement these days...</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 4, 2015 at 5:34 PM, Rudolf Adamkovič <span dir="ltr">&lt;<a href="mailto:salutis@me.com" target="_blank">salutis@me.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">To be a little more specific, here’s a real-world example:<br>
<br>
1. Say there’s a method in my class that contains a local variable called “title”.<br>
2. After a while, I decide to remove a part of this method, including the “title” variable.<br>
3. Everything compiles and seems to work just fine.<br>
4. However, I forgot to remove one more line that used the “title” variable.<br>
5. Because we’re in a UIViewController subclass, I&#39;m unknowingly modifying view controller’s title.<br>
<span class="HOEnZb"><font color="#888888"><br>
R+<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
&gt; On 4 Dec 2015, at 22:51, Rudolf Adamkovic &lt;<a href="mailto:salutis@me.com">salutis@me.com</a>&gt; wrote:<br>
&gt;<br>
&gt; +1<br>
&gt;<br>
&gt; 1) I actually encountered at least two bugs in my app introduced by this implicit &quot;self&quot; behavior. It can be dangerous and hard to track down.<br>
&gt;<br>
&gt; 2) Also when, say fine-tuning UIKit animations, I find myself wasting enormous amount of time adding and removing &quot;self&quot;.<br>
&gt;<br>
&gt; R+<br>
&gt;<br>
&gt; Sent from my iPhone<br>
&gt;<br>
&gt;&gt; On 04 Dec 2015, at 22:19, David Hart &lt;<a href="mailto:david@hartbit.com">david@hartbit.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; I don&#39;t understand the reasoning behind removing the need to access instance properties and functions using self. Swift has always seemed to prefer readability to brevity and the feature makes the distinction between local and instance variables/functions crystal clear. Any good reason I shouldn&#39;t go on with the proposition?<br>
&gt;&gt;<br>
&gt;&gt; Just as example, my proposition makes the following piece of code illegal:<br>
&gt;&gt;<br>
&gt;&gt; ```<br>
&gt;&gt; struct FooBar {<br>
&gt;&gt;   var foo: String = &quot;foobar&quot;<br>
&gt;&gt;<br>
&gt;&gt;   func bar() {<br>
&gt;&gt;       print(foo) // compiler error<br>
&gt;&gt;       print(self.foo) // compiler happy<br>
&gt;&gt;   }<br>
&gt;&gt;<br>
&gt;&gt;   func bar2() {<br>
&gt;&gt;       bar() // compiler error<br>
&gt;&gt;       self.bar() // compiler happy<br>
&gt;&gt;   }<br>
&gt;&gt; }<br>
&gt;&gt; ```<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; swift-evolution mailing list<br>
&gt;&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt;&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>