Swift에서 C/C++/Objective-C 코드를 사용하는 방법에 대한 설명서가 많이 있습니다. Objective-C에서 Swift 사용에 대한 정보도 있습니다.C/C++에서 신속한 라이브러리를 사용 하시겠습니까?
그러나 알고 싶습니다 : C 또는 C++ 코드에서 Swift 라이브러리를 사용할 수 있습니까? 당신이 목표 C에서 신속 기능을 포장 그래서 만약
당신은 목표 C와 목표 C에서 신속 사용할 수 있습니다Swift에서 C/C++/Objective-C 코드를 사용하는 방법에 대한 설명서가 많이 있습니다. Objective-C에서 Swift 사용에 대한 정보도 있습니다.C/C++에서 신속한 라이브러리를 사용 하시겠습니까?
그러나 알고 싶습니다 : C 또는 C++ 코드에서 Swift 라이브러리를 사용할 수 있습니까? 당신이 목표 C에서 신속 기능을 포장 그래서 만약
당신은 목표 C와 목표 C에서 신속 사용할 수 있습니다짧은 답변 : 예, @Josh Homann이 이미 제안한 것처럼 C에서 호출 할 수있는 방식으로 작성된 Objective-C 코드의 Swift 코드를 래핑하여 가능합니다.
그러나, 여기서주의 할 몇 가지 있습니다 : 당신이에서 스위프트를 호출 할 C 코드가 명령 줄 유틸리티의 일부입니다
여기에 설명의 편의상 작은 단순화 된 예가 나와 있습니다.
int32_t processIntegerOC(int32_t i) {
puts("Entered Objective-C wrapper, about to use Swift...");
SwiftClass * sc = [[SwiftClass alloc] init];
return [sc processInteger:i];
}
: 다음과 같을 수하는
.m
파일에
@objc public class SwiftClass : NSObject {
var myInt : Int32 = 111
@objc public func processInteger(_ anInt : Int32) -> Int32 {
myInt += anInt
print("About to return \(myInt) from Swift")
return myInt
}
}
목표 - C 래퍼 : 이제 우리는 C에서의 사용을 할 것인지 만 스위프트에서 사용할 수있는이 중요한 기능을 가지고 있다고 가정 해 봅시다
이 함수는 C에서 호출 할 수 있지만 Objective-C 파일에 있기 때문에 Swift를 사용할 수 있습니다. 이 함수는 다른 C 함수가 C 코드에서 호출됩니다.
void processIntegerC(int32_t i) {
puts("Entered processIntegerC(), about to call Objective-C wrapper...");
int32_t retVal = processIntegerOC(i);
printf("processIntegerC() has integer %d\n", retVal);
}
는 C의 엄격한 상위 집합은 다음 C.
에서 ObjC를 호출에이 thread를 참조하십시오 C.에서 호출 할 수있다