title: Why I can change the get-only property?
body: <p>Can anyone explain why I can set value to a get-only property?</p>
  
  <p>Here is the example. This protocol contains get-only property of type the custom class, and a class conform to it.</p>
  
  <pre class="lang-swift prettyprint-override"><code>protocol ViewModel {
      var title: MyTitle { get }
  }
  
  class MyTitle {
      var title: String
      var otherProperty: Int
  }
  
  class MyViewModel: ViewModel {
      var title: MyTitle
      init() {
          self.title = MyTitle.init()
      }
      func didChangeTitle(title: String) {
          self.title.title = title
      }
  }
  </code></pre>
  
  <p>I think the <code>title</code> property should be get-only, and will trigger function in MyViewModel when user finish editing <code>UITextView</code>.</p>
  
  <pre class="lang-swift prettyprint-override"><code>
  class TableViewCell: UITableViewCell, UITextViewDelegate {
      var viewModel: MyViewModel?
      func bind(to viewModel: MyViewModel) {
          self.viewModel = viewModel
      }
  
      func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -&gt; Bool {
          if text == "\n" {
              self.viewModel?.title.title = textView.text /* Why can the property supposed to be get-only be changed here */
              textView.resignFirstResponder()
              return false
          }
          return true
      }
  }
  
  </code></pre>
  
  <p>But actually I can update the value directly without the function of MyViewModel.</p>
  
  <p>Can anyone explain?</p>