0

UITextInputTraits に準拠するオブジェクトとして UITextView にアクセスすると、奇妙なコンパイル エラーが発生します。

protocol MyEditingView:UITextInputTraits where Self: UIView {
}

extension UITextView:MyEditingView {
}

class SomeClass {
  var editingView:MyEditingView = UITextView()
  func someFunc() {
    editingView.autocorrectionType = .no
  }
}

「プロパティに代入できません: 'self' は不変です」

ただし、プロパティがプロトコルで明示的に宣言されている場合、UITextInputTraits から継承せずに正常にコンパイルされます。

protocol MyEditingView where Self: UIView {
  var autocorrectionType: UITextAutocorrectionType { get set }
}

また、プロパティの宣言は UITextInputTraits と同じです。

スウィフト 4.2、XCode 10.1

4

1 に答える 1