Я изучил основы Swift и некоторые C. Как я мог объединить C и Swift в одном проекте? Могу ли я игнорировать Objective-C?Можно ли смешивать C и Swift?
ответ
Можно смешать 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.
Вы можете определенно напрямую взаимодействовать с кодом C. This page содержит более подробную информацию о том, как вы это делаете.
Swift предназначен для бесшовной совместимости с Objective-C. Это означает, что мы можем использовать Swift API в Objective-C и наоборот.
Использование swift может, безусловно, взаимодействовать с библиотекой, написанной на C. И это лучший способ использовать одни и те же библиотеки на разных мобильных платформах, поскольку Android и iOS поддерживают чистый C. Однако вам не нужно изучать Objective- C, потому что мы можем разрабатывать приложения, используя только быстрые.
Примечание из документации на яблоки: вы не можете импортировать код C++ непосредственно в Swift. Вместо этого создайте обертку Objective-C или C для кода C++.
- 1. Можно ли смешивать С и С ++ код
- 2. Можно ли смешивать SqlConnection.BeginTransaction и TransactionScope?
- 3. Можно ли смешивать TypeScript и CoffeeScript?
- 4. Можно ли смешивать TypeScript и ClojureScript
- 5. Можно ли смешивать JQuery и Javascript?
- 6. Можно ли смешивать и сопоставлять атрибуты rel?
- 7. Можно ли смешивать PHP и jQuery?
- 8. Можно ли смешивать AudioServicesPlaySystemSound и AVAudioPlayer?
- 9. Python & C: Можно ли смешивать Ctypes и Swig вместе?
- 10. QT и C#: Можно ли их смешивать для мобильных разработок?
- 11. Можно ли смешивать версии OpenGL?
- 12. Можно ли смешивать несколько деклараций/инициализаций?
- 13. Можно ли смешивать x64/x86 в проекте C#?
- 14. Можно ли смешивать полученные на C++ классы с Qt Q_OBJECT?
- 15. Можно ли смешивать типы данных в буферах в OpenGL (C++)?
- 16. Можно ли смешивать и сопоставлять InterlockedIncrement и CriticalSection?
- 17. Можно ли смешивать типы проектов Eclipse?
- 18. на C части проекта C#: Можно ли смешивать исходный код C и C# (VS10)
- 19. Можно ли смешивать градиенты с сплошными цветами?
- 20. Можно ли смешивать? -Faces в JSF
- 21. Можно ли смешивать реализацию заголовков JNI с обычными классами C++?
- 22. OpenGL: можно ли смешивать glBindBuffer с glBindBufferARB?
- 23. Можно ли смешивать до вызова конструктора?
- 24. Можно ли смешивать присвоение переменной с условием?
- 25. Можно ли смешивать количество столбцов в GridView
- 26. Можно ли смешивать Unity с UIKit?
- 27. Можно ли смешивать OnIdiom и OnPlatform в XAML (Xamarin.Forms)?
- 28. Можно ли смешивать горизонтальные и вертикальные блоки в Java BoxLayout?
- 29. Можно ли смешивать UIKit и TVMLKit в одном приложении?
- 30. Dygraphs: можно ли смешивать серии с и без ошибок?