Objective-C 및 C++을 혼합해야합니다. 한 클래스 안에 모든 C++ 물건을 숨기고 모든 다른 것들을 Objective-C로 유지하고 싶습니다. 문제는 인스턴스 변수로 C++ 클래스가 필요하다는 것입니다. 이것은 헤더 파일에 언급되어야한다는 것을 의미합니다. 헤더 파일은 다른 클래스에 포함되어 C++이 전체 응용 프로그램에 확산되기 시작합니다. 지금까지 나와 함께 할 수 있었던 최상의 해결책은 다음과 같습니다.Objective-C 클래스의 인스턴스 변수로 C++ 클래스
이 방법이 효과적입니다. 구현 파일은 mm
확장자를 가지므로 Objective-C와 C++가 섞여 컴파일되고 #ifdef
은 C++을 잠금 해제합니다. 다른 Objective-C 클래스가 헤더를 가져 오면 C++ 항목은 숨겨지고 클래스는 특별한 것을 보지 못합니다. 이것은 해킹처럼 보이지만 더 좋은 해결책이 있습니까?
그것은 내가 같은 문제가있을 때 가지고 올 것을 기본적이다 :
자세히과 ++ ObjC에 대해 길게 이야기 팟 캐스트를 포함하는 정보에 더 링크,이 스레드를 참조하십시오. 하지만 ifdef에주의를 기울여 라. 비 -cpp 분기에 패딩을 삽입해야한다. 그렇지 않으면 컴파일러는 Foo 객체의 크기를 알 수 없습니다. 이것은 취약하지 않은 인스턴스 var 빌드에서 중단되지 않을 수도 있지만 이전 스타일의 대상에서는 확실히 문제입니다. –위에서 설명한 접근 방식을 복사했습니다. 꽤 멋지고 쉬운 것 같았지만, 다음에는 미친 메모리 손상 문제가 발생했습니다 : http://stackoverflow.com/questions/2458652/objective-c-insanity-simple-assignement-to-a-single-float-variable-results – morgancodes