2015-01-28 4 views

ответ

7

Можно смешать Swift и C. На самом деле это довольно легко. Например, если вы наберете import Darwin в игровую площадку, вы найдете все виды функций C:

import Darwin 

let i = atoi("42") 
let path = String.fromCString(getenv("PATH")) 

let voidptr = malloc(10 * UInt(sizeof(Int))) 
let ptr = UnsafeMutablePointer<Int>(voidptr) 
for i in 0..<10 { 
    ptr[i] = i 
} 
let buffer = UnsafeBufferPointer(start: ptr, count: 10) 
reduce(buffer, 0, +) // sum(1 to 10) = 45 
free(ptr) 

Существуют различные преобразования удобства, например, в приведенном выше коде, «42», автоматически преобразуются в C- строка стиля, которая будет передана в atoi. Точно так же, если вы объявите var i: Int = 0, вы можете передать, что в C API, который принимает C указатель на междунар в f(&i) и массивы так же автоматически преобразуются в указатели, когда вы передаете их.

См the docs на Веб-сайт Apple для получения дополнительной информации о том, как вы можете взаимодействовать с C от Swift.

0

Вы можете определенно напрямую взаимодействовать с кодом C. This page содержит более подробную информацию о том, как вы это делаете.

0

Swift предназначен для бесшовной совместимости с Objective-C. Это означает, что мы можем использовать Swift API в Objective-C и наоборот.

Использование swift может, безусловно, взаимодействовать с библиотекой, написанной на C. И это лучший способ использовать одни и те же библиотеки на разных мобильных платформах, поскольку Android и iOS поддерживают чистый C. Однако вам не нужно изучать Objective- C, потому что мы можем разрабатывать приложения, используя только быстрые.

Примечание из документации на яблоки: вы не можете импортировать код C++ непосредственно в Swift. Вместо этого создайте обертку Objective-C или C для кода C++.

Смежные вопросы