我在 String
上有一个扩展,它定义了 test
。我还希望能够从 NSString
获得 test
的功能。在实际代码中,String.test
更为复杂。因此,我没有为 NSString
重新实现它,而是将 str
转换为 String
并对其调用 test
。我的理解是,现在 str
是 String
类型, String.test
将被调用,返回 String Test
.
但是,似乎 str.test()
最终调用了 NSString.test
并且我最终以无休止的递归结束,直到堆栈溢出。
import Foundation
extension NSString {
func test() -> NSString {
let str = self as String
return str.test() as NSString
}
}
extension String {
func test() -> String {
return "String test"
}
}
let s: NSString = "test"
s.test()
最佳答案
将您的第一个函数更改为:
func test() -> NSString {
let str = self as String
return ("" + str.test()) as NSString
}
这应该让你继续......
然后提交错误报告。
HTH
关于swift - NSString 扩展方法不调用 String 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44448229/