마침내 매우 내 그래프 검색 자의 기본 버전이 CLI를 통해 작동하지만 모든 코드를 리팩토링해야하는 위치에 있습니다. Mac에서이 프로그래밍을하고 있기 때문에 GUI 용으로 Cocoa를 사용하고 C++ 기능을 workhorses로 사용하려고합니다. 이것은 결국 임시 수정이 될 것이고 결국에는 리눅스 박스/클러스터에서 모든 코드를 실행할 수 있기를 원합니다. Here 구현에 대한 내 마지막 질문이며, 내 자신의 그래프 함수를 롤링 (지금 당장),이 작업을 향상시키지 않았다.Objective-C와 부스트/C++의 혼합
그래서 내 생각은 다음과 같습니다. 그래프 자체에 대한 C++ 클래스를 빌드하고 계산할 수량에 대한 함수 나 메소드를 분리하십시오. This은 Objective-C와 C++을 함께 사용하는 것과 관련하여 찾을 수있는 최신 설명입니다. 하지만 궁금 해서요 :
Xcode에서 내 C++ 코드를 컴파일하는 것이 최적화되어 있습니까? 요점은 C++ 코드가 빠른 메모리 액세스, 다중 스레드를 위해 완벽하게 최적화되고 boost 라이브러리에 액세스 할 수 있기를 바랍니다. 그런 다음 래핑 ObjectiveC 클래스에 C++ 클래스를 캡슐화 할 수 있습니다. 이렇게하려면 2 개의 클래스가 있어야합니다. .h 및 .cpp 파일 및 포함 된 부스트 라이브러리가있는 C++ 클래스, .h 및 .mm 파일이있는 ObjC 클래스 래퍼 (여기서 .h는 C++ 클래스에 대한 참조를 포함하지 않음) .mm 파일. 그렇다면 Objective C에 대해 일반적인 MVC 디자인과 GUI 구현을 사용할 수 있습니다. dealloc 명령에 C++ 클래스의 핵 능력을 부여하면 메모리 관리에 대해 걱정할 필요가 없습니다. ARC는 C++에서도 잘 작동하며 OSX에 메모리를 관리하고 C++ 코드를 정리할 수있는 기능을 제공합니까?
내가 스레딩을 원한다면 GCD 코딩이 특정 플랫폼이 될 것이므로 스레딩을 향상시킬 것이라고 생각합니다 (현재로서는 이것이 모두 실행됩니다). 지금 당장은 텍스트 파일을 구문 분석하여 그래프를 작성하기 때문에 코어 데이터에서 벗어날 것입니다.
부스트 및 C++ 11에서 공유 포인터는 실제로 참조 카운팅을 사용합니다. . . 하지만 Objective-C와는 전혀 호환되지 않습니다. –
ARC는 여전히 C++ (ObjC 객체에만 사용)에서 작동하며 __unsafe_unretained를 사용하지 않고도 구조체에 ObjC obj를 포함 할 수 있습니다. C++의 메모리 관리는 다른 이야기입니다. share_ptr은 참조 카운팅을 활성화하는 데 사용될 수 있습니다 (그러나 성능이 좋지 않을 수 있습니다). –
@JasperBlues 머리를 주셔서 감사합니다. 그러나 그것은 상관이 없습니다. –