gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:04:11 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com