<div dir="ltr">On 30 October 2017 at 23:14, Adam Kemp <span dir="ltr"><<a href="mailto:adam_kemp@apple.com" target="_blank">adam_kemp@apple.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On Oct 30, 2017, at 4:10 PM, Mike Kluev <<a href="mailto:mike.kluev@gmail.com">mike.kluev@gmail.com</a>> wrote:<br>
><br>
> "classprivate" helps to resolve this problem. if it is marked so developer will at least think twice before making an extension to use it<br>
<br>
</span>Why would they think twice, though? You’ve told them extensions can use it, and they’ve written an extension to use it. What did they do wrong? I don’t think the rules are nearly as clear as for protected.<br></blockquote><div><br></div><div>this is obvious: when they are writing a method in their own class and try to call: some.foo() it will give them and access level error (or even before that the autocomplete will not work as an early hint), they will reveal foo's definition, see "classprivate" in there and at that very point take a pause, think and make a conscious decision whether they really want it or not. if they really want it they will make an extension (which would be a legitimate use of it) if they don't need it really - they will find another way without making an extension. the (reasonable) expectation is that such a "classprivate" will reduce the number of instances where "foo" is used thus reducing the "working set" of instances i have to review when making a change to it.</div><div><br></div><div>Mike</div><div><br></div></div></div></div>