2
我有一个协议,在objc看起来像:雨燕3.0版本方法
@protocol TestProtocol
- (void)releaseProtocol;
@end
雨燕3.0自动将其转换成
protocol TestProtocol {
func release()
}
但是,这带来一个问题,因为如果我有一类编译器会从NSObject继承,因为协议中的release()与NSObjectProtocol中的release()相冲突。
class TestClass: TestProtocol, NSObject
{
func release() { #[email protected]#.! } // Compiler error
}
此时,我无法更改源协议,因为它在SDK中,我无法修改。
有没有办法告诉swift编译器将其转换为不同的名称,或指定方法fooRelease()对应于TestProtocol.release()方法?
本名并不坏,只是做简单的提问。无论如何,ObjC名字将来会改变,实际上我维护原来的SDK。但是我想知道是否有一种方法可以在不发布新版SDK的情况下克服这种转换。 – HyLian
我们都讨厌向公共API分发非向后兼容的更改,但是您可能需要咬紧牙关。另外,这不会影响Swift 3用户吗?而且,由于这对于Swift 3用户使用基于NSObject的类无效,所以Swift 3的用户群在他们的基于非'NSObject'的类中实现'release()'有多大。 .. – Rob