title: Swift readonly external, readwrite internal property
body: <p>In Swift, what is the conventional way to define the common pattern where a property is to be externally readonly, but modifiable internally by the class (and subclasses) that own it. </p>
  
  <p>In Objective-C, there are the following options: </p>
  
  <ul>
  <li>Declare the property as readonly in the interface and use a class extension to access the property internally. This is message-based access, hence it works nicely with KVO, atomicity, etc. </li>
  <li>Declare the property as readonly in the interface, but access the backing ivar internally. As the default access for an ivar is protected, this works nicely in a class hierarchy, where subclasses will also be able to modify the value, but the field is otherwise readonly. </li>
  </ul>
  
  <p>In Java the convention is: </p>
  
  <ul>
  <li>Declare a protected field, and implement a public, read-only getter (method). </li>
  </ul>
  
  <p>What is the idiom for Swift? </p>