【发布时间】:2017-06-16 12:42:00
【问题描述】:
我正在尝试使用 swift 3.0
中的对象执行选择器我有一个只有一个参数的选择器
func imageSelected(aImage : UIImage)
我这样称呼它
viewC.perform(Selector.init("imageSelected:"), with: image, afterDelay: 0.1)
但应用程序崩溃并显示选择器未定义的错误。
【问题讨论】:
我正在尝试使用 swift 3.0
中的对象执行选择器我有一个只有一个参数的选择器
func imageSelected(aImage : UIImage)
我这样称呼它
viewC.perform(Selector.init("imageSelected:"), with: image, afterDelay: 0.1)
但应用程序崩溃并显示选择器未定义的错误。
【问题讨论】:
这是我在swift中遇到选择器时总是做的事情:忽略参数,只使用名称。
你用过这个:
imageSelected:
: 在那里做什么?删除它!只需使用方法的名称!
另外,还有这个很棒的 #selector 语法糖,请使用它:
viewC.perform(#selector(imageSelected), with: image, afterDelay: 0.1)
【讨论】:
它开始运行良好,我修改了被调用的选择器
来自
func imageSelected(aImage : UIImage)
到这里
func imageSelected(_ aImage : UIImage)
【讨论】:
_ 作为第一个参数标签,您仍然可以使用aImage 访问它,问题是您还需要在您的方法中添加您的类名。
这适用于 swift 4.0
perform(#selector(yourMethodHere), with: nil, afterDelay: 1)
在函数前添加@objc 标志
@objc public func yourMethodHere(){
//your code here
}
【讨论】: