已经向我指出,有一种更好的方式可以编写此代码而不使用本地闭包。我怎样才能做到这一点?点击即可切换图片。
@IBAction func btnMuteMicPressed(_ sender: Any) {
publisher.publishAudio.toggle()
let buttonImage: UIImage = {
if !publisher.publishAudio {
return #imageLiteral(resourceName: "group3-1")
} else {
return #imageLiteral(resourceName: "group3")
}
}()
btnMuteMic.setImage(buttonImage, for: .normal)
}
答案 0 :(得分:1)
这可以简称为
@IBAction func btnMuteMicPressed(_ sender: Any) {
publisher.publishAudio.toggle()
let buttonImage = !publisher.publishAudio ? #imageLiteral(resourceName: "group3-1") : #imageLiteral(resourceName: "group3")
btnMuteMic.setImage(buttonImage, for: .normal)
}
我认为这里不需要closure
来获得buttonImage
。这绝对不意味着您的代码是错误的。
答案 1 :(得分:0)
绝对可以在此处删除封包:
@IBAction func btnMuteMicPressed(_ sender: Any) {
publisher.publishAudio.toggle()
let buttonImage: UIImage
if !publisher.publishAudio {
buttonImage = #imageLiteral(resourceName: "group3-1")
} else {
buttonImage = #imageLiteral(resourceName: "group3")
}
btnMuteMic.setImage(buttonImage, for: .normal)
}
但是旧的初始化方式并没有天生的错误。