Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Xcode
- error
- 페이백
- 스마트폰
- Bitcode
- 앱스토어
- afterdelay
- 신도림
- 보라카이
- swift3
- 얻는법
- loop
- push
- 아이폰7
- UITableView
- swift
- GCD
- simulator
- LG유플러스
- 포켓볼
- Example
- UIView
- Check
- setting
- 신도림 테크노마트
- 포켓몬 GO
- 해몽
- 공략
- 샘플
- IOS
Archives
- Today
- Total
도래울
Objective-C에서 소스 파일의 확장자들 개념 본문
먼저 h파일은 c++과 같게 .h로 동일합니다. 하지만 소스파일이 다른데요, .m(.c에 대응)과 .mm(.cpp에 대응)두가지가 존재합니다. 이렇게 된 이유는 단지 .o와 .c가 C에 의해 이미 사용되고 있었기 때문이라는 군요. 물론 .c, .cpp도 사용가능합니다.
m : Objective-C 구현 파일
mm : Objective-C, C++ 혼용 가능 파일
뭐 이렇다네요. mm으로된 녀석은 Objective-C 문법과 C++문법 둘다 있어도 된다는 거죠. 실제로도 cocos2d-x의 몇몇 mm파일들이 그러합니다.
간단하게 cocos2d-x의 ios helloworld 소스를 살펴보면,
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // Add the view controller's view to the window and display. window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; EAGLView *__glView = [EAGLView viewWithFrame: [window bounds] pixelFormat: kEAGLColorFormatRGBA8 depthFormat: GL_DEPTH_COMPONENT16 preserveBackbuffer: NO sharegroup:nil multiSampling:NO numberOfSamples:0]; // Use RootViewController manage EAGLView viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; viewController.wantsFullScreenLayout = YES; viewController.view = __glView; // Set RootViewController to window [window addSubview: viewController.view]; [window makeKeyAndVisible]; [[UIApplication sharedApplication] setStatusBarHidden: YES]; cocos2d::CCApplication::sharedApplication().run(); return YES; }
AppController.mm 파일 내용중 일부입니다. 다 Objective-C문법을 쓰다가 마지막에 run()부분은 c++이죠. 이렇게 혼용이 가능한게 .mm인거죠. 이러한 일들은 Xcode 내부에서 자동적으로 확장자에 맞는 컴파일러를 선택해 컴파일을 한다고 합니다.
cpp class에 NSString* 변수를 멤버로 가지고 있으면서 사용도 가능하다고 하네요.
'개발 > iOS' 카테고리의 다른 글
무료 오픈소스 SQLite 툴, DB Browser for SQLite (0) | 2016.03.11 |
---|---|
Mac에서 wireshark를 사용한 iphone 패킷 캡쳐 (0) | 2016.03.03 |
Swift 훑어보기 (0) | 2016.02.29 |
Swift 프로젝트에서 Objective-C 코드를 함께 사용하기 (0) | 2016.02.23 |
코드를 보기좋게 재정렬 해주는 Xcode 플러그인 - XAlign (2) | 2016.02.17 |
Comments