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
相关产品推荐
相关产品推荐

