gpt4 book ai didi

objective-c - Throwing 方法不能是@objc 协议(protocol)的成员,因为它返回类型为 'Bool' 的值

转载 作者:搜寻专家 更新时间:2023-10-31 22:21:17 25 4
gpt4 key购买 nike

我收到以下错误:

Throwing method cannot be a member of an @objc protocol because it returns a value of type 'Bool'; return 'Void' or a type that bridges to an Objective-C class

定义 Swift 协议(protocol)时也需要桥接到 Objective-C:

@objc public protocol Saving {

func save() throws -> Bool
}

是否有其他方法可以定义返回 Bool 的 Swift 方法,可能会抛出错误并与 Objetive-C 兼容?

最佳答案

如评论中所示,Swift 中的以下内容:

func save() 抛出

将被翻译成:

(BOOL)saveAndReturnError:(NSError **)错误

在 Objective-C 中。这解释了限制。

我知道在 save() 示例中,返回 Bool 以及抛出可能没有多大意义,但我不同意关于它的评论根本没有意义。可能还有其他有意义的用例。外汇。反例;使用标识符加载 Bool。如果加载失败,加载 Bool 可能会返回 true/falsethrow,fx。如果在尝试加载时未找到标识符。

但是不幸的是,由于 Swift 和 Objective-C 的桥接方式,我们无法做到这一点。

关于objective-c - Throwing 方法不能是@objc 协议(protocol)的成员,因为它返回类型为 'Bool' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870155/

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