NSString扩展方法不调用String扩展方法

Ale*_*ach 5 extension-methods nsstring swift

我对String定义进行了扩展test。我也希望能够从中获取test功能NSString。在实际代码String.test中更为复杂。因此,而不是重新实现它为NSString我投strString和呼叫test就可以了。我在这里的理解是,现在str是类型StringString.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()
Run Code Online (Sandbox Code Playgroud)

CRD*_*CRD 2

将您的第一个函数更改为:

func test() -> NSString {
    let str = self as String
    return ("" + str.test()) as NSString
}
Run Code Online (Sandbox Code Playgroud)

这应该会让你继续...

然后提交错误报告。

华泰