Swift String
s предоставляет метод withCString
, который предоставляет указатель CString внутри замыкания.С другой стороны, когда я хочу передать swift String
методу, импортированному из C, например,
func foo(_ ptr: UnsafePointer<Int8>)
, я могу передать его непосредственно как литерал
foo("bar")
илилюбая переменная типа String
var s = "bar"
foo(s)
В этих случаях правильно ли компилятор конвертирует в CString, и если да, то где это задокументировано, чтобы я мог быть уверен в этом поведении?
Также, почему существует явный withCString
, если компилятор может сделать это автоматически?Чтобы обеспечить срок службы объекта?