Может ли кто-нибудь объяснить, почему я могу установить значение для свойства только для получения?
Вот пример. Этот протокол содержит свойство только для получения типа настраиваемый класс и класс, соответствующий ему.
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
}
}
Я думаю, что свойство title
должно быть только для получения и будет запускать функцию в MyViewModel, когда пользователь fini sh редактирование UITextView
.
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) -> 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
}
}
Но на самом деле я могу обновить значение напрямую без функции MyViewModel.
Кто-нибудь может объяснить?