에에 문자열의 신속한 배열을 변환, 그리고 예를 들어, 문자열의 NULL로 끝나는 목록을 받아들이는 C의 API와 상호 작용해야내가 스위프트 3에있어 C 문자열 배열 포인터
const char *cmd[] = {"name1", "value1", NULL};
command(cmd);
스위프트에서
는 API는 아직도이 일을 얻을 수없는 타입 캐스팅 또는 unsafeAddress(of:)
를 사용하여 수백 번 시도 후
func command(_ args: UnsafeMutablePointer<UnsafePointer<Int8>?>!)
처럼 가져온. 컴파일을 통과 한 유효한 포인터를 전달하더라도 런타임에 잘못된 메모리 액세스 (strlen 함수에서)라는 오류가 발생합니다. 아니면 ARC에 관한 것입니까?
let array = ["name1", "value1", nil]
// ???
// args: UnsafeMutablePointer<UnsafePointer<Int8>?>
command(args)
의 가능한 중복 https://stackoverflow.com/questions/29469158/how-to-pass-an-array-of-swift-strings-to- ac-function-taking-a-char-parameter –