C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)
C 시스템 모듈을 가져오고, 간단한 POSIX/C API를 호출하며, Foundation 브리지(String/NSString, 배열/딕셔너리)를 사용합니다. Objective-C의 NSError** 가 Swift의 throws 가 되는 방식도 살펴봅니다.
C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
상호 운용성 살펴보기
다음은 상호 운용성을 간단히 살펴보는 내용입니다.
- C: 시스템 모듈을 가져오고 POSIX 도우미를 호출합니다.
- Foundation: String/NSArray/NSDictionary 연결을 제공합니다.
- NSError → Swift의 throws
C 가져오기 및 포인터
Swift에서는 많은 C API를 직접 호출할 수 있습니다. 이식성을 위해 조건부 가져오기를 사용하고, char*는 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)C 난수 예시
플랫폼의 C 함수를 호출하십시오. 예를 들어 Apple에서는 arc4random_uniform을, Linux에서는 random()을 사용할 수 있습니다. 예시는 작고 이식성 있게 유지하십시오.
#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)
#endifFoundation 연결
Foundation 타입은 자연스럽게 연결됩니다: 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
Objective-C의 NSError** 매개변수는 throws로 가져옵니다. try/do-catch를 사용하면 수동 포인터가 필요하지 않습니다.
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)
}Swift를 Objective-C에 노출하기
Swift API에 @objc/@objcMembers를 주석으로 표시하고 NSObject를 상속하면, 혼합 코드베이스에서 Objective-C가 해당 API를 볼 수 있습니다.
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.NSError 연결 방법
간단 확인: NSError** API는 어떻게 가져오나요?
요약
요약:
- Darwin/Glibc를 가져오고 간단한 C API를 호출하십시오.
- 문자열과 컬렉션에는 Foundation 연결을 사용하십시오.
- Objective-C의 NSError**는 Swift의 throws로 매핑됩니다.
AI 튜터와 함께 Swift을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 122
- 레슨
- 409
자주 묻는 질문
“C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)” 강의는 무료인가요?
네 — “C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)”에서 뭘 배우나요?
C 시스템 모듈을 가져오고, 간단한 POSIX/C API를 호출하며, Foundation 브리지(String/NSString, 배열/딕셔너리)를 사용합니다. Objective-C의 NSError** 가 Swift의 throws 가 되는 방식도 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.
“C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Swift 스크립트(swift 셰뱅), 명령줄 도구
- C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)
- SPM으로 바이너리 패키징하기