快速String
公开了方法withCString
,该方法在闭包内部提供了CString指针。另一方面,当我想将快速String
传递给从C导入的方法时,例如
func foo(_ ptr: UnsafePointer<Int8>)
我可以将其直接作为文字
传递foo("bar")
或任何String
类型的变量
var s = "bar"
foo(s)
在这种情况下,编译器是否正确转换为CString?如果是,则在哪里记录下来,这样我就可以确定这种行为吗?
如果编译器可以自动执行此操作,为什么还要有一个显式withCString
?为了确保对象寿命?