在更新到Xcode 14、iOS 16、SWIFT5.7之后,在编译我得到的项目时:
Sendability of function types in instance method 'addObserver(forName:object:queue:using:)' does not match requirement in protocol 'NotificationCenterProtocol'发布于 2022-09-23 08:57:30
tl;博士
如果您有一个自定义协议,并且要将一个现有的类与它保持一致,那么确保方法签名完全匹配,在本例中,将@Sendable添加到闭包中(在@escaping之后)。
当您创建一个协议,然后使一个现有的类与它保持一致时(在本机NotificationCenter中),就会发生这种情况。您必须获得协议中方法的签名,才能与类中现有的签名完全匹配。
在最新的更新中,引入了@Sendable,需要将其添加到您的自定义协议中,例如,对于NotificationCenter,这个函数需要说:[...] using block: @escaping @Sendable (Notification) -> Void。
提示:查看确切函数签名的最简单方法是通过“Developer文档”(在“帮助”菜单下),因为在那里您可以看到Swift语法。如果您要在NotificationCenter上'Cmd + Click‘,那么您将看到这些方法,但使用的是Objective语法。
https://stackoverflow.com/questions/73825322
复制相似问题