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