正如文档所指定的,该GKGameCenterControllerDelegate
协议具有一种必需的方法:. 你需要在你的类中实现这个方法。gameCenterViewControllerDidFinish
Menu
编辑:针对您的评论,我将提供更深入的解释。
协议是一个接口,包括一组预期要实现的功能。任何实现该协议的东西,称为委托,都应该定义该集合中的所有功能。这些函数将被引用您的实现的其他类使用,并在必要时调用它们。
把它想象成在银行工作。您是出纳员,负责与客户合作并分发资金。但是,有时您的抽屉里的钱会用完,因此您必须要求您的经理从金库中取回更多钱。现在,哪个经理为您取回现金并不重要。它可以是你的直属,他的老板,一直到公司的老板。您所关心的只是能够获得现金,以便您可以继续帮助客户。作为出纳员,您将定义一个包含如下方法的协议:func requestCash(amount: Int) -> Int?
. 您还将有一个代表负责实施该方法,或者在我们的上下文中,他的工作是为您提供现金。现在,每当您的资金不足时,您就有办法获得更多。
因此,当您打卡开始作为出纳员的工作时,您需要您的经理有能力为您提供现金。假设他们雇佣了一个没有资历的新人来打开金库。好吧,他不会为你工作。当他说他将成为您当天的经理(或实施您的协议)时,您知道他实际上无法从金库中获取现金(不实施您的方法)。所以,你抱怨。因此,您看到的错误。
注意:您可以有可选的协议方法。这是完全有效的(在我们上面的示例中,它可能类似于func approveLoanRequest(loan: Loan) -> Bool
- 您可以简单地要求客户在不同的日子回来以批准贷款请求,这在您的日常工作中不是必需的)。在这种情况下,如果方法未实现,则不会调用它们,并且具有协议的类如果未实现则不会抛出错误。