Throwing 方法不能是@objc 协议的成员,因为它 returns 类型为 'Bool' 的值
Throwing method cannot be a member of an @objc protocol because it returns a value of type 'Bool'
我收到以下错误:
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协议时也需要桥接到Objective-C:
@objc public protocol Saving {
func save() throws -> Bool
}
是否有其他方法可以定义 Swift 方法,该方法可以 return Bool
,可能引发错误并 Objetive-C
兼容?
如评论中所示,Swift中的以下内容:
func save() throws
将翻译成:
(BOOL)saveAndReturnError:(NSError **)error
在 Objective-C 中。这解释了限制。
我知道在 save()
示例中,return a Bool
和投掷可能没有多大意义,但我不同意关于它没有做出的评论完全没有感觉。可能还有其他有意义的用例。外汇。反例;使用标识符加载 Bool
。如果加载失败,加载 Bool
可能 return true
/false
或 throw
,fx。如果在尝试加载时未找到标识符。
然而不幸的是我们不能这样做,因为 Swift 和 Objective-C 是如何桥接的。
我收到以下错误:
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协议时也需要桥接到Objective-C:
@objc public protocol Saving {
func save() throws -> Bool
}
是否有其他方法可以定义 Swift 方法,该方法可以 return Bool
,可能引发错误并 Objetive-C
兼容?
如评论中所示,Swift中的以下内容:
func save() throws
将翻译成:
(BOOL)saveAndReturnError:(NSError **)error
在 Objective-C 中。这解释了限制。
我知道在 save()
示例中,return a Bool
和投掷可能没有多大意义,但我不同意关于它没有做出的评论完全没有感觉。可能还有其他有意义的用例。外汇。反例;使用标识符加载 Bool
。如果加载失败,加载 Bool
可能 return true
/false
或 throw
,fx。如果在尝试加载时未找到标识符。
然而不幸的是我们不能这样做,因为 Swift 和 Objective-C 是如何桥接的。