在swift 3中使用Object执行选择器

Zah*_*bas 15 selector ios swift3 ios10

我试图在swift 3.0中使用对象执行选择器

我有一个选择器,有一个参数

func imageSelected(aImage : UIImage)

我称之为

viewC.perform(Selector.init("imageSelected:"), with: image, afterDelay: 0.1)

但应用程序崩溃时出现错误,未定义选择器.

Swe*_*per 8

这是我在swift中遇到选择器时经常做的事情:忽略参数,只需使用名称即可.

你用过这个:

imageSelected:
Run Code Online (Sandbox Code Playgroud)

在那:做什么?删除它!只需使用方法的名称!

此外,有这个伟大的#selector语法糖,请使用:

viewC.perform(#selector(imageSelected), with: image, afterDelay: 0.1)
Run Code Online (Sandbox Code Playgroud)


小智 6

这是快速4.0

perform(#selector(yourMethodHere), with: nil, afterDelay: 1)
Run Code Online (Sandbox Code Playgroud)

在函数之前添加@objc标志

@objc public func yourMethodHere(){
     //your code here
}
Run Code Online (Sandbox Code Playgroud)


Zah*_*bas 5

它开始运作良好,我修改了被调用的选择器

func imageSelected(aImage : UIImage)
Run Code Online (Sandbox Code Playgroud)

对此

func imageSelected(_ aImage : UIImage)
Run Code Online (Sandbox Code Playgroud)

  • 不需要添加 `_` 作为第一个参数标签,你仍然可以使用 `aImage` 访问它,问题是你还需要在你的方法中添加你的类名。 (2认同)