Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)
Impor modul sistem C, panggil API POSIX/C sederhana, dan gunakan bridge Foundation (String/NSString, array/kamus). Lihat bagaimana NSError** Objective-C menjadi throws Swift.
Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS) adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 3 pelajaran total.
Peta interoperabilitas
Berikut tinjauan singkat tentang interoperabilitas:
- C: impor modul sistem dan panggil pembantu POSIX
- Foundation: jembatan String/NSArray/NSDictionary
- NSError → Swift throws
Impor C & penunjuk
Swift dapat memanggil banyak API C secara langsung. Gunakan impor kondisional agar portabel dan konversikan char* dengan String(cString:).
// Import the platform C module: Darwin (Apple) or Glibc (Linux)
#if canImport(Darwin)
import Darwin
#else
import Glibc
#endif
// Use C getenv (returns C pointer) and strlen
if let cPtr = getenv("USER") {
let name = String(cString: cPtr) // bridge C char* -> Swift String
print("Hello,", name)
} else {
print("Hello, anonymous")
}
// strlen works on C strings:
let cString: [CChar] = Array("swift".utf8).map { CChar($0) } + [0]
let len = strlen(cString)
print("strlen(s) =", len)Contoh acak C
Panggil fungsi C pada platform (misalnya, arc4random_uniform di Apple dan random() di Linux). Jaga contoh tetap kecil dan portabel.
#if canImport(Darwin)
import Darwin
let r = arc4random_uniform(100) // 0..99
print("random:", r)
#else
import Glibc
let r = UInt32(random() % 100) // 0..99 (demo)
print("random:", r)
#endifJembatan Foundation
Tipe Foundation dapat dijembatani secara alami: String⇄NSString, [Any]⇄NSArray, [Key:Any]⇄NSDictionary.
import Foundation
// String ↔ NSString bridge is seamless
let swiftString: String = "hello"
let ns: NSString = swiftString as NSString
print(ns.uppercased) // via NSString API
let back: String = ns as String
print(back + " world")
// NSArray / NSDictionary bridge to Swift collections
let nsArray: NSArray = ["a", "b", "c"]
let swiftArray = nsArray as! [String]
print(swiftArray.joined(separator: ","))
let nsDict: NSDictionary = ["lang": "Swift", "year": 2014]
let swiftDict = nsDict as! [String: Any]
print(swiftDict["lang"] as? String ?? "-")NSError → throws
Parameter NSError** dari Objective-C diimpor sebagai throws. Gunakan try/do-catch—tidak diperlukan penunjuk manual.
import Foundation
// Many Obj-C methods that take NSError** are imported as throwing in Swift.
let fm = FileManager.default
// Create a temporary file, then remove it with "try".
let tmp = (NSTemporaryDirectory() as NSString).appendingPathComponent("demo.txt")
FileManager.default.createFile(atPath: tmp, contents: Data("hi".utf8), attributes: nil)
do {
try fm.removeItem(atPath: tmp) // was NSError** in Obj-C → throws in Swift
print("removed ok")
} catch {
print("remove failed:", error)
}Mengekspos Swift ke Obj-C
Anotasikan API Swift dengan @objc/@objcMembers (dan warisi NSObject) agar terlihat oleh Objective-C dalam basis kode campuran.
import Foundation
@objcMembers
class Adder: NSObject {
dynamic var last: Int = 0
@objc func add(_ a: Int, _ b: Int) -> Int { last = a + b; return last }
}
let a = Adder()
print(a.add(2, 3)) // 5
print(a.last) // 5
// In mixed projects, Obj-C can call Adder via the generated Swift header.Jawaban bridging NSError
Pemeriksaan singkat: Bagaimana API NSError** diimpor?
Ringkasan
Ringkasan:
- Impor Darwin/Glibc dan panggil API C sederhana.
- Gunakan jembatan Foundation untuk string/koleksi.
- NSError** dari Objective-C dipetakan ke throws Swift.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)” gratis?
Ya — teks lengkap “Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)”?
Impor modul sistem C, panggil API POSIX/C sederhana, dan gunakan bridge Foundation (String/NSString, array/kamus). Lihat bagaimana NSError** Objective-C menjadi throws Swift. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Skrip Swift (shebang swift), alat baris perintah
- Interoperabilitas C/Obj-C sekilas (tanpa hal khusus iOS)
- Mengemas biner dengan SPM