gpt4 book ai didi

swift3 - Swift 3.0 发布方法

转载 作者:行者123 更新时间:2023-12-04 03:19:00 24 4
gpt4 key购买 nike

我在 objc 中有一个协议(protocol),它看起来像:

@protocol TestProtocol
- (void)releaseProtocol;
@end

Swift 3.0 自动将其转换为

protocol TestProtocol {
func release()
}

但这会产生一个问题,因为如果我有一个继承自 NSObject 的类,编译器会提示,因为协议(protocol)中的 release() 与 NSObjectProtocol 中的 release() 冲突。

class TestClass: TestProtocol, NSObject 
{
func release() { #?@#.! } // Compiler error
}

此时,我无法更改源协议(protocol),因为它在我无法修改的 SDK 中。

有没有办法告诉swift编译器将其转换为不同的名称,或者指定方法fooRelease()对应于TestProtocol.release()方法?

最佳答案

该协议(protocol)的 Objective-C 声明必须更改。如果您不能自己更改它,我建议您向作者发出拉取请求,要求他们使用 NS_SWIFT_NAME 以实现 Swift 互操作性。您可能不是唯一会遇到此问题的使用此 SDK 的人。

因此,它应该声明为:

@protocol TestProtocol
- (void)releaseProtocol NS_SWIFT_NAME(releaseProtocol());
@end

关于swift3 - Swift 3.0 发布方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39577696/

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