<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 13, 2015, at 3:57 PM, Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com" class="">brent@architechies.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="font-family: HelveticaNeue; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">I don’t think these are troll proposals. They *are* a little more limited, a little more esoteric, but you could say the same thing about `local` vs. `private`. And in some cases you can emulate some of these with the four access modifiers you want, but again, you could say the same thing about `local` vs. `private`.</span><br style="font-family: HelveticaNeue; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""></div></blockquote></div><br class=""><div class="">You're right. &nbsp;Your examples have convinced me of this point. &nbsp;There exist non-troll proposals for further access modifiers.</div><div class=""><br class=""></div><div class=""></div><blockquote type="cite" class=""><div class=""><span style="font-family: HelveticaNeue;" class="">But it’s not zero-cost. It’s another thing to learn, another thing to think about, another way you have to mentally analyze your code.</span></div></blockquote><div class=""><span style="font-family: HelveticaNeue;" class=""><br class=""></span></div><div class=""><span style="font-family: HelveticaNeue;" class="">I meant zero performance cost. &nbsp;Of course all features have "cost" if we mean "cognitive overhead". &nbsp;Type safety for example has a huge cognitive overhead. &nbsp;Think back to the days of "Bool is not an NSString". &nbsp;But the benefit of typesafety is large. &nbsp;</span></div><div class=""><span style="font-family: HelveticaNeue;" class=""><br class=""></span></div><div class=""><span style="font-family: HelveticaNeue;" class="">In this case, the cognitive overhead is small, and so is the benefit. &nbsp;But I think the value-per-unit-cost is similar. &nbsp;In both cases the compiler helps you not do something very very bad, that is hard to debug in ObjC.</span></div><div class=""><span style="font-family: HelveticaNeue;" class=""><br class=""></span></div><div class=""><blockquote type="cite" class=""><span style="font-family: HelveticaNeue;" class="">many people, when they do that, find this idea wanting.</span></blockquote><br class=""></div><div class="">Who? &nbsp;You? &nbsp;Then build an argument around that. &nbsp;I don't know who "many people" are or what their justification is.</div><div class=""><br class=""></div><div class="">My justification is essentially that A) something like Synchronized is a problem nearly everybody has and B) the difficulty of defining a class-based solution in an optimal way.</div><div class=""><br class=""></div><div class="">On B, we seem to agree:</div><div class=""><br class=""></div><div class=""><blockquote type="cite" class=""><span style="font-family: HelveticaNeue;" class="">&nbsp;it might be difficult to construct a Synchronized instance correctly.</span></blockquote><br class=""></div><div class="">So I can only conclude you disagree about A. &nbsp;However, I think my A is much stronger than is strictly necessary to demand a language feature. &nbsp;There are plenty of language features that not everyone uses, so the fact that you don't have a need for it (or even "many people") is not really a counterargument I am able to understand.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>