You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

这两种UIAlertAction的addAction声明写法有什么区别?

问题结论

你提到的handler: {(_: UIAlertAction!)这部分内容不是必填项,两种写法的运行效果没有任何区别。

具体作用说明

  • 首先UIAlertAction的handler参数要求传入一个闭包,该闭包默认接收一个UIAlertAction?类型的入参,这个入参代表用户当前点击的那个弹窗按钮实例。第二种写法是把入参的类型显式写出来了,而第一种写法是利用了Swift的类型推断特性,编译器可以自动根据参数要求推导出入参类型,不需要开发者手动声明。
  • 写法里的_是忽略参数名的标识:如果你在闭包的业务逻辑里不需要用到这个被点击的按钮实例,就可以用_省略参数名,避免编译器报出「变量未使用」的警告。
  • 如果你后续需要用到这个按钮的属性(比如读取按钮的标题、样式等),就可以给参数命名,不用_忽略,示例如下:
alert.addAction(UIAlertAction(title: "Test", style: .default, handler: { action in
    print("用户点击了按钮:\(action.title ?? "无标题")")
}))

内容的提问来源于stack exchange,提问作者AppleCider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:18:02