这两种UIAlertAction的addAction声明写法有什么区别?
问题结论
你提到的handler: {(_: UIAlertAction!)这部分内容不是必填项,两种写法的运行效果没有任何区别。
具体作用说明
- 首先
UIAlertAction的handler参数要求传入一个闭包,该闭包默认接收一个UIAlertAction?类型的入参,这个入参代表用户当前点击的那个弹窗按钮实例。第二种写法是把入参的类型显式写出来了,而第一种写法是利用了Swift的类型推断特性,编译器可以自动根据参数要求推导出入参类型,不需要开发者手动声明。 - 写法里的
_是忽略参数名的标识:如果你在闭包的业务逻辑里不需要用到这个被点击的按钮实例,就可以用_省略参数名,避免编译器报出「变量未使用」的警告。 - 如果你后续需要用到这个按钮的属性(比如读取按钮的标题、样式等),就可以给参数命名,不用
_忽略,示例如下:
alert.addAction(UIAlertAction(title: "Test", style: .default, handler: { action in print("用户点击了按钮:\(action.title ?? "无标题")") }))
内容的提问来源于stack exchange,提问作者AppleCider
相关产品推荐
相关产品推荐

