이번에 OpenSMILE이라는 C언어 기반의 라이브러리를 연동해 기능을 구현해야하는 상황이 생겨 Objective-C 코드를 Swift에서 연결해 사용하는 방법에 대해 설명하려고 한다 🙂
먼저 Swift에서는 C 또는 Objective-C 코드를 직접 “import”해서 사용할 수 없다 대신 Bridging Header라는 특별한 헤더 파일을 만들고 그 안에 연결하고 싶은 오브젝티브씨 파일을 입포트해 구문을 작성하면 Swift 컴파일러가 해당 언어들을 인식하여 Swift 코드에서 사용할 수 있게 된다.
Bridging Header는 Objective-C에서 정의된 클래스, 함수, 상수들을 Swift에서 쓸 수 있게 해주는 다리역할을 한다고 생각하면 된다 🙂
먼저 파일을 생성해주기 위해 Command+N 을 해주면 사진과 같이 헤더 파일이 존재하게 되는데 여기서 Header file을 선택하고 프로젝트명-Bridging-Header라는 규칙에 맞게 이름을 설정하면 된다!
그렇게 생성한 브릿지에 아까 말했듯 적용하고 싶은 오브젝티브씨를 임포트해주면 해당 파일을 가져와 사용할 수 있게 된다.
#import "OpenSMILEWrapper.h"
그러면 이렇게 Swift코드에서 OpenSMILEWrapper를 직접 사용할 수 있게 된다.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let openSmaile = OpenSMILE()
openSamile.someMethod()
}
}
그 다음 이 파일을 Build Settings 에서 브릿지 헤더 부분에 만들었던 헤더 파일을 작성해 주면 간단하게 사용이 가능하다 🙂
여기서 주의해야할 점은 Bridging Header 의 파일 위치를 정확하게 넣어야 한다는 점이다. 현재 만들어 둔 Bridging Header의 파일이 어디에 위치해있는지 파악한 다음 맞는 위치를 선언해 주도록 하자.
오늘은 너무 바쁘게 하루를 보내서 간단한 개념정도만 잊지 않기 위해 작성하고 다음에는 Starstream을 활용한 실시간 라이브 스트리밍을 구현한 것을 남기는 시간을 가져야겠다 🙂 오늘은 여기까지!!
'◽️ Programming > iOS' 카테고리의 다른 글
Swift Concurrency에서 Task는 어떤 역할을 담당하나 (0) | 2025.02.20 |
---|---|
Swift Concurrency 중 MainActor의 역할은 무엇인가 (0) | 2025.02.03 |
Vision 프레임 워크를 활용해 얼굴 인식하기 (0) | 2025.01.20 |
JWT의 기본 개념과 HaruFit 프로젝트에 적용해보기 (0) | 2025.01.12 |
Swift Format , Swift Lint 프로젝트에 적용하기 (0) | 2025.01.07 |