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

标签 swift nsstring extension-methods

我在 String 上有一个扩展,它定义了 test。我还希望能够从 NSString 获得 test 的功能。在实际代码中,String.test 更为复杂。因此,我没有为 NSString 重新实现它,而是将 str 转换为 String 并对其调用 test 。我的理解是,现在 strString 类型, 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/

相关文章:

c# - 如何在没有嵌套类的情况下在 Azure Functions 中共享扩展方法?

c# - 使用 Linq 的隐式转换

c# - 将 Func<T1, T2> 作为参数传递时,方法未被正确调用

swift - 处理 AlamoFire 中异步通信导致的延迟

ios - 如何使用 Alamofire 缓存文件下载请求?

arrays - Swift Loops 控制台的顺序不正确

ios - UIPickerView 方法中的奇怪泄漏

ios - UInavigationController 中使用异步代码的弱无主用法

objective-c - 如何制作 NSString 宏?

ios - 具有属性的 NSMutableArray