swift中Target和Action有什么区别?

7 ios swift swift3

我什么时候应该使用Target和零动作?另一方面,我何时应该使用Action和nil Target,何时应该使用Action和Target?

let rightButton = UIBarButtonItem(title: "Done", style: .done, target: nil, action: nil)
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 9

通常,您会同时看到目标和行动.

目标和动作用于指代特定方法.在您的代码段中,您正在创建一个UIBarButtonItem.在UIBarButtonItem需要知道什么时候被窃听它应该叫什么方法.

你怎么告诉它调用哪种方法?

"只需传递方法参考"你可能会说:

let rightButton = UIBarButtonItem(
    title: "Done", style: .done, methodToCall: self.myMethod)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这只适用于swift.UIBarBUttonItem是一个客观的C API,所以这种方法不能使用.

在目标C中,Selectors表示方法,但它们不存储调用方法的对象.这就是为什么我们需要一个额外的target参数.它指定应该调用该方法的对象.在action另一方面,用于指定要调用哪个方法.

在这里,我们想打电话self.myMethod.调用该方法的对象是self,被调用的方法是myMethod.大!现在让我们通过这些!

let rightButton = UIBarButtonItem(
        title: "Done", style: .done, target: self, action: #selector(myMethod))
Run Code Online (Sandbox Code Playgroud)