공룡호가 사는 세상 이야기

1. [New File] 메뉴를 이용하여 나오는 창에서 C++ 항목을 선택하세요
    - Cocoa Thouch 에서는 C++ 생성 항목이 없습니다, 아래쪽 Cocoa 항목에서 선택할 수 있습니다.

2. 파일이름을 입력하세요( CppObject.mm)
   - 헤더파일과 함께 프로젝트에 생성됩니다.

3. 클래스를 구현하세요.

 CppObject.h

    class CppObject
    {
           int  m_nMeber;
public:        
       CppObject();
       ~CppObject();
    }

 

 CppObject.mm

   CppObject::CppObject()
   {
       m_nMember = 10;
   }   
   CppObject::~CppObject()
   {
   }

4. 컴파일을 우선 해봅니다.
5. 컴파일 성공해서 빌드까지 무사히 성공되는 것을 볼 수 있습니다.

--------------------------------------
 이제 Object-C에서 직접 사용해 보시다.
--------------------------------------

1. AppDelegate 클래스의 초기화 함수에서 호출해 봅니다. 

 AppDelegate.m

 #include "CppObject.h"
 - (void) somefunction
{
   CppObject* pObj = new CppObject();
  delete pObj;
}

2. 컴파일 합니다.
3. 에러가 발생합니다.
   - Object-C는 파일확장자를 이용하여 언어를 구분하는 것 같았습니다.
   - m 확장자인 경우에는 C++ 코드를 사용할 수 없었습니다.
4. 그래서 AppDelegate.m의 확장자를 mm으로 변경합니다

 AppDelegate.mm

 #include "CppObject.h"
- (void) somefunction
{
   CppObject* pObj = new CppObject();
  delete pObj;
}

5. 다시 빌드합니다
6. 빌드 성공해서 디버깅해봅니다.
   m_pObj->m_nMember 값이 생성자에서 설정한 '10'을 가지고 있음을 알 수 있습니다.
이제부터는 C++를 자유롭게 이용할 수 있다니, 한결 개발이 자유로울 것 같네요. 

----------------------------------------------
Cocoa 객체 사용하기
----------------------------------------------

다음으로, C++ 클래스에서 Cocoa 객체를 사용할 수 있는지 테스트 해보았습니다. 
1. 아래와 같이 Cocoa 객체를 선언하고, 생성합니다. 

 CppObject.h

    class CppObject
   {
       int  m_nMeber;
       NSString*   strTitle;
public:        
       CppObject();
       ~CppObject();
    }

 

 CppObject.mm

   CppObject::CppObject()
   {
       m_nMember = 10;
       strTitle = [NSString stringWithString:@"Hello World"];
   }   

   CppObject::~CppObject()
   {
       [strTitle release];
   } 

2. 빌드 합니다.
3. 위의 테스트 코드에서 breakpoint를 설정하고 값을 확인 또는 생성자에서 값을 확인합니다.
   - strTitle이 "Hello World"를 가지고 있는 것을 볼 수 있습니다. 
이상입니다. 

결론은  C++를 사용하고 싶으면 확장자를 mm으로 사용하는 것 이었습니다. 참 쉽죠~

기존에 가지고 있던 C++ 코드가 있다면, 많은 부분을 재사용할 수 있을것 같네요.
C++를 사용함으로써 iPhone에서 다른 문제가 있는지는 저두 입문한지 얼마안되서 잘 모르겠습니다.
이부분은 저두 사용해 보면서, 추가적인 정보가 있으면 올리도록 하겠습니다.

[출처]맥부기 개발자 모임: 아이펠스님 게시물

일단은 간단하게 기록 해 둡니다. VMWare를 이용합니다.

[기본설정]
1. VMWare leopard 10.5.7 torrent 검색(google) - 최신 XCode가 10.5.6 이상을 요구
   - iDeneb Max OSX 10.5.7 이 검색됨
2. torrent를 이용, 파일을 다운로드 하고, 압축 해제.(약 10G)
3. VMWare 6.5실행, Open메뉴에서 압축 푼 폴더에서 파일 선택
4. VMWare에서 새로운 탭이 생성되는 것을 확인
5. [Resume this virtual machine]을 선택하고 실행(기본 상태가 suspend)

※ 주의사항
- 기본상태가 suspend상태임. power-off하고 부팅하면 정상부팅 안됨
- OSX 내부에서 Shutdown 이나 Log-off 하면 안됨.
> 종료시에도 반드시 suspend 사용.

[네트웍 설정]
기본적인 네트웍이 Host 상태임
VMWare의 suspend 상태에서는 네트웍을 변경할 수 없음

1. 가상머신이 설치된 곳의 iDeneb Mac OSX 10.5.7.vmx 파일을 텍스트 에디터로 오픈
2. ethernet0.connectionType = "nat" 를 추가 (메모리 용량도 추가 가능)
3. OSX를 다시 실행(Resume)
4. 네트웍 설정에서 DHCP로 설정
5. 사파리로 웹 커넥션 테스트
6. 안되면 다시 점검

[XCode]
인터넷이 올바로 연결되었으므로
1. developer.apple.com 에서 XCode를 download & install

※ 주의사항
- OS업그레이드 하면 부팅안됨
- 종료시 반드시 suspend
- 종료 가능한 버전이 10.5.4이나, XCode가 10.5.6을 요구하므로 업그레이드 하면 부팅 안됨.

종료 가능한 정상버전 또는 방법을 알고계신 분 계시면 연락 부탁드립니다.