Как передать нулевой указатель на C API в Swift?
Более конкретно, я пробую следующее:
import Accelerate
let v = [1.0, 2.0]
var m = 0.0
var sd = 0.0
// 3rd arg is of type: UnsafeMutablePointer<Double>?
vDSP_normalizeD(v, 1, nil, 0, &m, &sd, vDSP_Length(v.count))
Документация для vDSP_normalizeD
найдена здесь .
Этот способ передачи nil, по-видимому, действителен для более ранних версий Swift, как в этом ответе .Однако при использовании Xcode v10.1 / Swift v4.2.1 выдается следующее сообщение об ошибке:
Nil несовместимо с ожидаемым типом аргумента 'UnsafeMutablePointer'
Следующее решениетоже не работает:
let p: UnsafeMutablePointer<Double>? = nil
vDSP_normalizeD(v, 1, p, 0, &m, &sd, vDSP_Length(v.count))
, выдавая следующее сообщение об ошибке:
Значение необязательного типа 'UnsafeMutablePointer?'должен быть развернут в значение типа «UnsafeMutablePointer»
В более ранних версиях Swift было возможно следующее:
let p = UnsafeMutablePointer<Double>(nil)
, но теперь генерируется следующая ошибка:
Неоднозначное использование 'init'
Итак, мой вопрос - как передать нулевой указатель на C API, используя современную версию Swift?