" \(字符串)"之间的区别和字符串?

时间:2017-04-13 07:25:35

标签: swift

    callfunc(string: "\(string)")

    callfunc(string: string)

我用相同的字符串值调用相同的函数但是方法不同.... 让我知道它的区别是什么?而且我想知道内存消耗。

3 个答案:

答案 0 :(得分:2)

没有区别,如果您的字符串类似于

,则使用"\()"
let someInt: Int = 20
print("my integer is \(someInt)") //"my integer is 20"

即。首先不是String

没有内存差异,因为String中的Swift不是引用类型,而是Struct,因此您将string的副本传递给callfunc ,而不是参考它。

答案 1 :(得分:0)

当你的字符串被隐式解包时,有一个区别是可选的。考虑一下例子:

func some(string: String)
{
    print(string)
}

let string: String! = "s"

some(string: string)
some(string: "\(string)")

输出将是:

s
Optional("s")

答案 2 :(得分:0)

callfunc(string:字符串)

在上述语法中,它是带有字符串的普通函数调用。

callfunc(string:“(string)”)

但是在这里,当我们将“(string)”作为参数传递时,在内部“(string)”会创建一个新的字符串并将其作为参数传递。因此,在该特定时间点,由于该字符串的内存分配,内存将变高,该字符串将立即再次释放。

通常,您将无法使用小字符串来观察它,但是如果您将图像转换为base64并尝试将其作为字符串传递。您可以看到区别。

除此之外,功能上没有区别。