gpt4 book ai didi

swift - 为什么我必须将 swift 协议(protocol)中的协议(protocol)和包含的可选函数标记为 @objc?

转载 作者:行者123 更新时间:2023-11-30 10:38:47 26 4
gpt4 key购买 nike

我在协议(protocol)中声明可选函数时发现了一些不一致的地方。在声明协议(protocol)中的函数为可选时,我必须将协议(protocol)和可选函数都标记为 @objc。然后我查找了 UICollectionViewDataSource 的文档,发现那里没有声明可选函数的要求。

我已尝试确认NSObjectProtocol,但编译器仍然要求我将协议(protocol)以及可选函数标记为@objc。有人可以告诉我同样的事情吗?

最佳答案

UICollectionViewDataSource是从ObjC导入的。自动生成的 Swift header 不会在每个元素上插入 @objc。这些 header 通常是无效的 Swift(例如,它们定义没有实现的结构和类,这在 Swift 中是无效的)。

当您编写 Swift 时(而不是查看自动生成的 header ),您需要告诉编译器它需要将某些内容桥接到 ObjC,并且可以使用 @objc 来完成此操作。导入的 ObjC 不必桥接。

关于swift - 为什么我必须将 swift 协议(protocol)中的协议(protocol)和包含的可选函数标记为 @objc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57306570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com