我正在尝试编写这样的委托界面:
// This delegate is just a sample. It could be any delegate.
// What's important here is the third function's signature.
protocol MyViewDelegate {
func myView(_ myView: MyView, didDoSomething something: String)
func myView(_ myView: MyView, didDoAnotherThing thing: String at: Date)
func myView(_ myView: MyView, didDoYetSomethingElse)
}
但是,第三个功能是无效的语法。它用于通知代理某些特定事件发生,因此签名很重要,我希望所有功能签名保持一致。
问题:第三个功能的推荐签名是什么?
答案 0 :(得分:2)
这可能不太令人满意,但你根本做不到。编写这样的方法有很多先例:


 func myViewDidAskUserName(_ myView:MyView)



 例如,来自Apple的常见问题:


 func applicationDidFinishLaunching(_ application:UIApplication)&# XA; 代码>


答案 1 :(得分:1)
您正试图让代理人选择发生的两种事情:说出某些内容,或者询问用户名。在Swift中,这种可能性的选择是 enum :
enum WhatHappened {
case didSaySomething(String)
case didAskUserName
}
现在写下你的方法签名:
protocol MyViewDelegate {
func myView(_ myView: MyView, _ whatHappened: WhatHappened)
}
可以通过说
来调用该方法myView(theView, .didSaySomething("hello"))
或者说
myView(theView, .didAskUserName)