iOS앱을 MAC App으로 Porting하기


iOS/아이폰 프로그래밍 2012.06.29 16:50



iOS 와 Cocoa는 유사하지만 생각보다 다른 점이 많다. 


iOS는 UIKit 을, 맥은 AppKit을. 그리고 

iOS는 Touch를 (- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event), 맥은 Mouse를 
- 여기서 좀 더 설명하자면 위의 ccTouch 대신 ccMouse를 사용하기에 바꾸어주어야 한다. 
ccMouseDown, Up, RightMoved 등등 그런 후에 원소스든 아니든 간에 클래스 init 시에 self.MouseEnabled를 꼭 Yes로 해주어야 마우스가 사용가능하다. 맥에서는 Touch 는 트랙패드를 의미한다. 


iOS는 UI, 맥은 NS를 
- 대부분의 프레임워크들의 이름들은 UI를 NS로 바꾸면 작동하지만, 모든 프레임워크 안에 메서드들까진 같지 않다. 
주로 UIGraphics 등 그래픽 관련 메서드들은 여러가지로 내부 메서드들이 다름. 


iOS와 COCOA는 

#ifdef __IPHONE_OS_VERSION_MAX_ALLOWED


#elif defined(__MAC_OS_X_VERSION_MAX_ALLOWED)


#endif

전처리문으로 처리해야 함. 


전체가 UIKit으로 제작되어 있다면, 포팅하는데는 생각보다 꽤 긴시간이 걸릴 듯 하다. 다른 프레임워크에서 구동되고, 그 프레임워크가 iOS와 MAC 둘다 지원하는 멀티 프레임워크라면 그나마 수월한 듯 하다. 


 + 원소스로 맥과 iOS를 지원하려고 한다면, 위와 같이 전처러문을 참고하며, 타겟을 제작해서 타겟별로 구현을 해야 함. 
프로젝트에 Target을 MAC용으로 제작하고 구동할 때에는 왼쪽 상단에서 iOS 인지 MAC인지 타겟을, 그리고 프로젝트의 Base SDK 를 따로 설정을 해주어야 정상적으로 구동이 됨. AppDelegate등 아예 다르게 구현을 한다면 MAC타겟 폴더안에서 클래스를 구현해야 함. 

저작자 표시 비영리 변경 금지
신고

WRITTEN BY
ShakeJ

0 ,