Swift Academy · 강의

C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)

C 시스템 모듈을 가져오고, 간단한 POSIX/C API를 호출하며, Foundation 브리지(String/NSString, 배열/딕셔너리)를 사용합니다. Objective-C의 NSError** 가 Swift의 throws 가 되는 방식도 살펴봅니다.

레슨 2/38개 단계

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)
#endif

Foundation 연결

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Swift 스크립트(swift 셰뱅), 명령줄 도구
  2. C/Obj-C 연동 한눈에 보기(iOS 세부 사항 제외)
  3. SPM으로 바이너리 패키징하기
← Swift Academy(으)로 돌아가기