본문 바로가기

iOS Programming

TabBar와 NavigationBar의 조합 아이폰 어플리케이션의 상당 수가 UITabBarController 와 UINavigationViewController를 이용합니다. UITabBarController는 메인 메뉴를 선택하는 역할을 주로 담당하고 UINavigationViewController는 해당 기능 안에서의 하위 기능으로의 뷰간 전환 시에 주로 이용됩니다. 필자 또한 리딩워치를 개발하면서 TabBar와 NavigationBar를 이용하여 구현하였습니다. 필자가 아이폰 프로그래밍 초보시절 (지금도 초보이긴 마찬가지이긴 합니다만) 바로 이 TabBar와 NavigationBar의 조합 방법을 몰라서 약간 해맨 기억이 있습니다. 애플의 가이드와 구글링을 통해 방법을 찾았었는데, 여러가지 방법이 있겠지만, Interface Bulder를 .. 더보기
Xcode에서 Subversion 이용하기 CVS (Concurrent Versions System)는 소프트웨어 게발에 있어 많은 유용한 환경을 제공합니다. 필자는 CVS가 유용을 넘어서 디버깅과 공동작업, 개발자의 실수나 시스템 오류를 복구할 수 있는 개발에 있어 꼭 갖추어야 할 필수 환경이라 생각합니다. 윈도우 개발환경에서 비쥬얼스튜디오에 포함된 Visual SourceSafe를 주로 이용했었는데, Mac의 Xcode에서는 Subversion이 있다는 것을 알게 되었습니다. Subversion외에도 다른 툴이 몇가지 있긴 하지만 Xcode 3.x for OS X Leopard에 기본적으로 포함된 Subversion을 이용하는 방법을 알아 보겠습니다. 먼저 소스 파일들을 보관할 수 있는 저장소가 필요합니다. Xcode에서는 이를 Reposit.. 더보기
아이폰 디바이스 OS 버전과 SDK 버전이 일치해야 테스트가 가능하다. 최근 필자는 아이폰 프로그래밍 기초 스터디를 대충 마무리하고 간단한 아이템으로 실전 개발을 시작하였습니다. 역시 스터디 보다 실전이 스터디에 더욱 효과적인 것 같습니다. 스터디도 그렇고 프로젝트 시작도 그렇고 아이폰 개발자 프로그램에 가입한지 1년이 다 되어 가지만 실제 필자의 아이폰 디바이스에서 테스트를 잘 하지 않았었습니다. 윈도우모바일과는 달리 아이폰 시물레이터가 워낙 잘 되어 있었고 디바이스에서 테스트 할만한 이슈가 없었기 때문이었습니다. 그러던 중 오늘, 현재 진행하고 있는 조그만 프로젝트에서 기능의 일부가 구현이 완료되어 아이폰 디바이스를 물리고 테스트를 하려는데 필자의 아이폰 디바이스에서 Provisioning을 찾을 수 없다는 메시지가 나오면서 어플 다운로드가 되지 않더군요 순간 약간 당황.. 더보기
NSTimer를 이용한 타이머 호출 매 일정 시간마다 특정 루틴이 실행되게 하고 싶을 때 타이머를 주로 이용합니다. 코코아 프로그래밍에서 타이머를 이용하는 방법은 아래와 같습니다. 1. 타이머에 의해 호출될 인스턴스 메소드를 작성합니다. 2. 타이머를 생성합니다. 3. 생성된 타이머를 RunLoop에 등록합니다. 자 그럼 샘플코드로 살펴볼까요? @interface MainView : UIView { @private NSTimer* _timer; // 타이머 클래스 변수 선언 } - (void)timerFireMethod:(NSTimer*)theTimer; // 타이머에 의해 호출될 메소드 선언 @end @implementation MainView - (id)initWithCoder:(NSCoder *)coder { if (self = [s.. 더보기
UIView의 초기화 루틴 Overriding 프로그래밍을 하다보면 뷰가 생성될 때 맴버변수 초기화나 쓰래드 생성 처럼 초기화 과정이 필요한 경우가 자주 있습니다. 이를 위하여 UIView에서는 initWithCoder 와 initWithFrame 메소드를 제공합니다. 전자는 Interface Builder의 nib파일에서 생성되는 뷰를 위한 초기화 메소드이고 후자는 프로그램 소스에서 생성하는 뷰를 위한 초기화 메소드입니다. // nib에서 생성되는 뷰를 위한 초기화 루틴입니다. - (id)initWithCoder:(NSCoder *)coder { if (self = [super initWithCoder:coder]) { // 여기에 초기화 루틴을 구현합니다. } return self; } // 프로그래밍 소스에서 생성되는 뷰의 초기화 루틴입니다. .. 더보기
Xcode Console Debugging 프로그래밍을 하다보면 사용자의 연속적인 입력이나 연속적으로 발생되는 이벤트 과정에서의 디버깅을 해야할 필요가 있습니다. 이 경우 Breakpoint를 활용한 디버깅으로는 한계가 있습니다. 이 때 주로 사용하는 것이 콘솔을 활용한 디버깅입니다. Visual Studio에는 Output 콘솔과 TRACE 또는 DbgPrint 함수를 이용하여 콘솔 디버깅이 가능합니다. Xcode에서도 Debugger Console과 NSLog 함수를 이용하여 콘솔디버깅이 가능합니다. Xcode에서 Run메뉴의 Console 랑목을 선택하여 Debugger Console을 띄운 다음 소스에서 디버깅을 원하는 위치에서 NSLog 함수를 사용하면 됩니다. NSLog(@"pnt.x = %f, pnt.x = %f", pnt.x, pn.. 더보기
ObjectiveC 초간단 훑어보기 생업에 종사하다 보니 모든 우선순위가 현재 제가 맡은 개발 업무에만 집중되고 있습니다. 그러다보니 스터디도 더디고, 그에 따라 카페만 만들어 놓고 강좌도 못올리고 ㅠㅠ 오늘은 Xcode에서 새로운 프로젝트를 만들 때 자동으로 생성해 주는 소스를 분석하는 방법으로 iPhone 어플리케이션의 개발 언어인 ObjectiveC를 간단하게 살펴보았습니다. 보다 체계적이고 상세한 공부를 위해서는 ObjectiveC 전문 서적으로 스터디해야 하겠지만,… 필자가 C/C++ 개발자이다 보니 C/C++과 하는 방법도 이용했으며, 일부 iPhone SDK의 내용도 다루었습니다. 여기에서 사용된 프로젝트는 View Based Application이며 그 이름을 VBApp로 명명하였습니다. Xcode를 이용해 만들어진 프로젝트.. 더보기
Window와 View iPhone App는 Window와 View를 통하여 컨텐츠를 표시하고 사용자의 입력을 받습니다. 오늘은 이 Window와 View의 개념에 대해 공부하였습니다. [ Window ] 1. Window는 시각적인 요소를 제공하지 않으며 이벤트의 연결 통로로만 사용됩니다. (시각적인 요소는 View를 통해서만 구현합니다.) 2. 하나의 Application은 하나의 Window만 가져야 합니다. View를 변경하는 방식으로 다중 컨텐츠를 제공해야 합니다. 3. Window는 상속될 수 없으며 override 함수 또한 구현될 수 없습니다. delegate를 이용해야 합니다. [ View ] 1. View 는 실제 컨텐츠들을 표시하고 사용자의 입력을 받는 사각 공간입니다. 2. View 는 SubView를 가.. 더보기
Hello iPod 2 (레이블과 버튼) 오늘은 (정확히 말하면 어제 ^^ 생업에 종사하느라 월요일은 좀 바뿌네요 ㅠㅠ) 레이블과 버튼을 활용하여 리소스와 소스가 실제 어떻게 연결되는지 공부하였습니다. 내용은 간단한 것으로 버튼을 클릭하면 Hello iPod 이 출력되도록 하는 것입니다. 1. Xcode를 실행하여 HelloiPod2 라는 프로젝트를 만들고 MainWindow.xib를 더블클릭하여 Interface Builder룰 실행시킵니다. 2. 그러면 아래와 같이 리소스의 구성요소, 레이아웃 디자인, 라이브러리, Inspector 창 등이 보여집니다. 사용환경에 따라 Inspector 창이 보이지 않을 수도 있는데 Tools 메뉴에서 Inspector 항목을 선택하면 나타납니다. 구성요소 창은 정확히 무엇을 의미하는지 모르겠습니다. 사실 .. 더보기
Hello iPod 프로그래밍을 공부할 때 처음으로 해보는 것 바로 Hello ~~~ 입니다. 그냥 Mac OS X 10.4. 이상의 OS에서 iPhone SDK만 설치하시면 쉽게 따라 하실 수 있으실 겁니다. 1. 먼저 Xcode를 실행합니다. 보통 /Developer/Application 안에 있습니다. 2. 그리고 File 메뉴의 New Project를 선택합니다. 3. 그러면 어떤 플랫폼으로 개발할건지 선택하는 화면이 나오는데 여기서 좌측 iPhone OS 바로 밑의 Application을 선택하고 우측의 Window-Based Application을 선택한 다음 Choose 버튼을 클릭합니다. 4. 프로젝트 이름을 Hello iPod이라고 입력하고 Save 버튼을 클릭합니다. 5. 그러면 아래와 같이 Xcode I.. 더보기