无法识别的选择器发送到实例-XCode 9.4.1,Swift 4.0

时间:2018-08-08 02:23:12

标签: swift xcode9.4

我正在研究斯坦福Swift Course iOS9 from 2016,并且在复制UIPinchGestureRecognizer时遇到麻烦,对选择器代码语法非常困惑。

FaceViewConroller.Swift中的内部类FaceViewController:

@IBOutlet weak var faceView: FaceView! {
    didSet {
        faceView.addGestureRecognizer(UIPinchGestureRecognizer(target: self, action: #selector(changeScale(_:))))
        updateUI()
    }
}

FaceView.Swift中Faceview的内部类定义:

@objc
func changeScale(_ recognizer: UIPinchGestureRecognizer) {
    switch recognizer.state {
    case .changed,.ended:
        scale *= recognizer.scale
        recognizer.scale = 1.0
    default:
        break
    }
}

它的构建没有错误(花了一段时间),但是当运行捏合手势会导致错误:

  

Faceit.FaceViewController changeScale:]:无法识别的选择器已发送到实例

谢谢。

1 个答案:

答案 0 :(得分:2)

您传递了错误的target参数。

由于要调用的方法(changeScale是在FaceView中声明的,因此目标应该是FaceView的实例,而不是FaceViewController,因为{{1 }}没有FaceViewController方法。

所以:

changeScale