通过选择器调用的方法不会遵循默认参数值。
示例
如果我有一个按钮进行了连接,通过选择器调用一个函数:
func setupButton() {
self.button.addTarget(self, action: #selector(printValue), for: .touchUpInside)
}
@objc func printValue(value:Int = 7)
{
if value == 7 {
print("received default")
} else {
print("default unused")
}
}
当通过代码调用此方法时,会打印出“接收的默认值”,但当我按下按钮并通过选择器调用该方法时,会打印出“默认未使用”,因为7没有作为值设置。
为什么会发生这种情况?
NSInvocation
,自己传递所需的参数。那样也是可以的。另外,我认为自动创建“包装器”函数可能会导致不必要的副作用。 - Macmade