callfunc(string: "\(string)")
callfunc(string: string)
我用相同的字符串值调用相同的函数但是方法不同.... 让我知道它的区别是什么?而且我想知道内存消耗。
答案 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并尝试将其作为字符串传递。您可以看到区别。
除此之外,功能上没有区别。