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

Swift初始化器下划线含义及类继承协议问题咨询

class Coordinator: NSObject, CountryPickerDelegate {
    var parent: CountryPickerUI
    
    init(_ parent: CountryPickerUI) {
        self.parent = parent
    }
}

问题1:初始化器init(_ parent: CountryPickerUI)中parent前的下划线_有什么含义?

这个下划线的作用是省略外部参数名。调用该初始化器时,不需要写参数标签,直接传入对应类型的值即可。比如创建实例时只需写Coordinator(somePickerUI),而非Coordinator(parent: somePickerUI)。这种写法适用于参数含义足够明确的场景,能让调用代码更简洁。

问题2:Coordinator类声明中的NSObject、CountryPickerDelegate分别起什么作用?是否表示该类需要同时继承NSObject并遵循CountryPickerDelegate?

是的,这个声明明确表示:

  • NSObject是Swift与Objective-C混编环境中的基础类,继承它可以让Coordinator获得NSObject的核心能力,比如支持键值观察(KVO)、与Objective-C代码交互、使用Foundation框架的相关特性等。很多UI相关的Swift类都会继承它,尤其是需要遵循Objective-C定义的协议时。
  • CountryPickerDelegate是一个协议,里面应该定义了国家选择器相关的回调规则(比如用户选中某个国家后的处理逻辑)。Coordinator遵循该协议,就必须实现协议中要求的方法(若协议包含必须实现的方法),从而可以作为CountryPicker的代理对象,接收并处理选择器的事件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:22:32