【问题标题】:Method 'setChecked' with Objective-C selector 'setChecked:' conflicts with setter for 'checked' with the same Objective-C selector带有 Objective-C 选择器“setChecked:”的方法“setChecked”与使用相同 Objective-C 选择器的“checked”的 setter 冲突
【发布时间】:2015-07-02 09:39:52
【问题描述】:

我创建了继承自 UIButton 的自定义类。

在那个类中,我创建了一个函数,定义为:

  func setChecked(checked:Bool){
        self.checked = checked
        if checked {
            buttonImageView.image = UIImage(named: "radioSelected.png")
        } else {
            buttonImageView.image = UIImage(named: "radioUnselected.png")
        }
    }

在我将 xCode 更新到 6.1.3 之前,它运行良好。

现在我在函数定义行不断收到错误消息:

方法 'setChecked' 与 Objective-C 选择器 'setChecked:' 冲突 使用相同的 Objective-C 选择器进行“检查”的设置器

我已经尝试对其进行覆盖,但随后我收到一条错误消息,提示“方法不会覆盖其超类中的任何方法”。

有人知道我该如何正确解决吗?

(我不想更改函数的名称。)

【问题讨论】:

标签: xcode function swift compiler-errors


【解决方案1】:

【讨论】:

  • 感谢您的回答,但我提到我不想更改函数的名称。我想了解这个名称冲突发生在哪里,如果实际上这里是名称冲突(我实际上在代码中找不到它),我想修复它。
  • @RSC 您找到发生这种情况的原因了吗?
【解决方案2】:

您的函数名称与您的属性冲突。如何通过属性观察以更优雅的方式实现它?这明确显示了值如何变化,以及值变化的副作用。

class RadioButton: UIButtom {
  var checked: Bool = false {
    didSet {
        buttonImageView.image = UIImage(named: checked ? "radioSelected.png" : "radioUnselected.png")
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    相关资源
    最近更新 更多