Parsing XML Files

이 글의 요지는 아이폰에서는 NSXMLParser는 지원되고, NSXMLDocument는 안된다는 것.
그래서 이런저런 Parser들이 존재하지만, 이들은 AppStore에 승인과정에서 Reject를 당할수 있습니다.

플래시쪽에서 쓰는 DOM방식이나 E4X방식에 너무 익숙해져서인지, 이런 방식으로 연동하는 것에 대해 많은 의문점이 있습니다.
과연 Event파서가 Tree파서에 비해 퍼포먼스적으로 우월한가.. 리소스관리에 우월한가..
plist를 사용하는 방식이나, json을 사용하는 것이 효율면에서는 좋아보이지만, XML을 아예 안쓸수는 없으니 말입니다.

조금더 살펴봐야겠습니다.

[iphonesdkarticles 원문]
http://www.iphonesdkarticles.com/2008/11/parsing-xml-files.html

1

XML을 트리 데이터 구조로 변환 (XMLTreeParser)


XML Parsing에 대한 설명이 잘되어있는 블로그 : http://kylog.tistory.com/43

XML파싱을 위한 간단한 트리노드 정의 – XMLTreeNode.h

3

Tree XML Parser for iPhone

XML파일을 파싱(Parsing)할때, 2가지 방법이 있습니다.
하나는, Event Parser를 사용하는 것, 다른 방법은 Tree Parser를 사용하는 것입니다.
Cocoa에서 이런 2가지 다른 파싱방법을 제공하지만, NSXMLDocument가 제공하는 방식은
iPhone에서 메모리사용에 있어서 크리티컬해서 TreeParser를 추천하지않습니다.
실제로 Apple社는 iPhone/iPod터치 에서는 NSXMLDocument를 제공하지않습니다.

이와 관련된 좋은 예제와 설명이 있는 포스팅이 있어 링크를 겁니다.
“wrapper for the libxml2”
“Using libxml2 for XML parsing and XPath queries in Cocoa”

또한, iPhone을 위한 XMLParser 2개를 더 소개합니다.

  • KissXML
  • TouchXML
    StackOverFlow (Dev커뮤니티)에서는 모바일기기에서 TreeParser를 사용하는 것이 왜 안좋은지,
    잘 설명해놨습니다.
    링크

    다음은 별도의 Tree 인터페이스를 적용하여 NSXMLParser를 개선한 방식입니다
    Enhancing the standard NSXMLParser class

    성능비교는 추후 다시 포스팅하도록 하겠습니다.

  • [AIP-L2] Profile생성과 인증서등록 / Portal 설정


    안녕하세요 마린즈입니다.
    회사일이 바쁘다보니, 연재포스팅이 좀 늦었습니다.

    오늘은 Device에서 테스트를 하기 위한 환경을 세팅하기 위해, 무조건 거쳐야만 하는 과정.
    Profile생성에 대해서 정리를 해보고자 합니다.
    Developer Program에 가입( http://note.marines.co.kr/114 )한 다음단계로 진행하겠습니다.


    STEP-01 : Portal 페이지
    일단 iPhone Developer Program Portal 메뉴로 들어갑니다.

    사용자 삽입 이미지
    [그림-1] iPhone Developer Program Portal

    사용자 삽입 이미지
    [그림-2] Portal 의 Welcome페이지

    Portal 페이지에 접속하면, 크게 6가지 메뉴로 구성되어있습니다.
    1. Indivisual/Team Member 설정
    2. 인증서(Certificates 관리)
    3. Devices 고유코드 관리
    4. App IDs 관리
    5. Provisioning (프로비저닝 : 고객에세 통신서비스를 제공하는 것) 관리
    6. Distribution (배포) 관리



    STEP-02 : 멤버설정사용자 삽입 이미지
    [그림-3] Team페이지

    저 같은 경우는 개인개발로 등록을 하여, 별도의 Admin Members에 대한 설정을 할필요가 없었습니다.
    Team으로 가입하셨다면, 초대를 통해 등록이 가능합니다.


    STEP-03 : 인증서 관리

    응용프로그램 > 유틸리티 > 키체인접근 을 실행합니다.

    사용자 삽입 이미지
    사용자 삽입 이미지
    사용자 삽입 이미지
    [그림-4,5,6] 인증서 생성

    위의 그림에 따라 인증서를 생성하고 인증키를 저장하고 나면, 키페어 정보를 설정하는 창이 나옵니다.
    여기서는 키 크기는 2048비트, 알고리즘은 RSA로 선택합니다.
    이렇게 생성된 “CSR”포맷의 파일을 “iPhone Developer Program Portal”에 업로드를 합니다.

    Certificates 메뉴의 Development탭에서 Add Certificate버튼을 클릭하여 업로드 가능하며, 잠시후에
    해당 인증파일에 대한 승인화면이 나옵니다.
    업로드 후에 바로 페이지가 갱신이 되지 않을경우가 많으니, 새로고침이나 페이지를 다시 로드해주세요.

    사용자 삽입 이미지

    WWDR Intermediate Certificate 메뉴를 선택하여 인증서를 내려받고, 이 파일을 더블클릭하여 키체인에 추가합니다.
    (click here to download now를 클릭하면 됩니다)
    그리고 다운로드 버튼을 클릭하여 우리가 등록한 인증서를 내려받아 이 또한 키체인에 추가합니다.
    총 2개의 인증서를 키체인에 등록하는 것입니다.



    STEP-04 : Device(아이폰,아이팟터치 등의 장치) 관리

    이제 Device설정을 해보겠습니다.
    사용자 삽입 이미지
    [그림-8] Xcode의 Organizer화면

    XCode를 실행하면 Window > Organizer 메뉴를 클릭하여, 장치정보를 봅니다.
    장치의 고유번호가 나옵니다. Identifier 항목을 보시면 되고, 이를 드래그 하여 복사한후에,
    “IDC Portal”에서 등록해줍니다.

    사용자 삽입 이미지
    [그림-9] Portal 의 Devices메뉴화면

    좌측에는 자신의 Device이름을 적어주고 우측에 identifier 정보를 입력한후 우측에 + 버튼을 눌러 추가해줍니다.


    STEP-05 : Apps ID, Provisioning, Distribution

    Apps ID는 iPhone OS의 어플리케이션이 키체인에 접근할 수 있게 해주는 유니크한 ID입니다.
    “Bundle Identifier”항목만 * 라고 적어주면 됩니다. 만약 같은 키 체인으로 동시에 어플을 개발하는 것이
    아니라면 * 로 지정하는 것이 좋다고 합니다.
    사용자 삽입 이미지
    [그림-10] Apps ID 등록화면

    사용자 삽입 이미지
    [그림-11] Provisioning Profile 등록화면

    사용자 삽입 이미지
    [그림-12] Provisioning Profile Download화면

    프로필 파일을 다운로드 받아 이를 더블클릭하면 키체인에 자동으로 등록됩니다.

    여기까지가 인증서 및 기타세팅이었습니다.
    복잡하다고 하면 복잡할수도 있는 절차이지만, 일단 시작이 반이라고 아이폰에 자신이 만든 어플을
    넣어볼수 있는 모든 준비는 끝난 것입니다. 다음 포스팅에서는 XCode를 설치하고, 간단한 샘플코드를
    다운받아 아이폰Device에서 Hello World화면을 볼수 있도록 해보겠습니다.

    [다음 포스팅]
    1. [AIP-L1] ADC iPhone Developer Program 등록하기
    2. [AIP-L2] Profile생성과 인증서등록 / Portal 설정
    3. [AIP-L3] XCode/iPhoneSDK 및 아이폰Device에 Hello! World! 출력하기
    4. Objective-C 의 특징

    [ObjC-L2] Class Hierarchy Diagram : Objective-C

    Objective-C : Class Hierarchy Diagram



    1. Foundation Classes



    NSObject Class안의 뿌리가 되는 The Foundation Class 계층구조는 속성과 비헤이비어를 정의하는 기본 Object입니다. (NSObject와 NSCopying프로토콜과 함께)

    Foundation Framework는 몇몇 관련 클래스 Group과 소수의 개인적인 클래스들로  구성되어 있습니다.



    [그림-1]은 클래스계층구조표입니다. 이는 서로의 상속관계 뿐만 아니라 논리적 그룹으로 표현되어있습니다. 파란영역에 해당하는 녀석들은 MacOSX와 iPhoneOS에 모두 존재합니다.

    클래스에서 회색영역은 오직 MacOSX에만 존재합니다.



    [그림-1] The Foundation class hierarchy

    사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지



    2. Kit Framework



    UIKit프레임워크의 Class들은 Application Kit처럼 NSObject를 상속받습니다.

    [그림-2.1] 에서 UIKit의 상속관계를 볼수있습니다.



    [그림-2.1] UIKit class hierarchy

    사용자 삽입 이미지





    Application Kit는 125 개 이상의 클래스와 프로토콜로 구성되어있습니다.

    모든 클래스들은 궁극적으로 Foundation Framework의 NSObject 클래스를 상속합니다.

    [그림 2.2]에서 다이어그램 Application Kit Class의 상속 관계를 보여줍니다.



    [그림-2.2] Application Kit class hierarchy—Objective-C
    사용자 삽입 이미지
    사용자 삽입 이미지










    [AIP-L1] ADC iPhone Developer Program 등록하기


    안녕하세요 마린즈입니다.

    요즘 아이폰 어플리케이션 개발에 급 관심이 생겨서, ADC에도 등록하고 아이폰SDK,코코아,XCode 등등
    여러 정보를 습득하느라 행복한 시간을 보내고 있습니다.
    ADC에서 iPhone Developer Program에 등록하는 과정에서 어려움이 있는분들이 많이 계시리라
    생각되어, 등록과정을 전반적으로 스샷과 함께 설명하고자 이렇게 포스팅합니다.

    이 포스팅은 MacOSX를 사용하며, iPhone Device를 소지하고 계신분들을 위한 글입니다.
    윈도우에서는 XCode를 사용할수가 없기 때문입니다.
    (해킨토시를 사용하는 분들은 가능하겠지요. 해킨토시 관련 링크 : http://x86osx.com )

    iPhone Developer Program에 등록하는 이유는 간단합니다.
    자신이 만든 App을 iTunes를 통하지 않고, 넣어서 테스트를 하기 위함이죠. 그리고 이를 배포하기 위함입니다.

    http://developer.apple.com/iphone/index.action 이곳에 접속하면

    사용자 삽입 이미지
    [그림-1] iPhone Dev Center 메인페이지

    이를 클릭하면가입하기전에 Apple ID가 필요하므로, 미리 가입을 해두시면 좋습니다.

    사용자 삽입 이미지
    [그림-2] Learn more 화면

    우측에 <Enroll Now> 버튼을 선택하면,  Standard Program / Enterprise Program 2가지의 설명이 나옵니다.
    다시 <Enroll Now>를 선택하면 iPhone Developer Program 가입절차가 시작됩니다.

    사용자 삽입 이미지
    [그림-3] 가입절차 진행

    사용자 삽입 이미지
    [그림-4] 재로그인 확인 / 아이디 생성 페이지

    개인으로 등록할 사람은 이미 사용하고 있는 Apple ID를 사용하면 되며, 회사나 기관이라면 아이디를 새로 만들어서
    Standard Company로 등록하여야 합니다. Individual로 등록하면 개인의 이름, Company로 하면 회사이름이 판매자이름으로 표시되기때문입니다.

    <Add to Cart> 버튼을 눌러서 장바구니에 담은후, 애플스토어에서 이를 구매하면 1단계가 끝납니다.
    결제까지 완료하면, 실제로 배송되지는 않으나 1~3일 정도가 소요되며, 정상적으로 등록이 된후에는
    이메일로 Activation Code와 Activation Link가 도착하게 됩니다.
    사용자 삽입 이미지
    [그림-5] 인증확인 메일

    Activation Code 라고 적힌 해당코드를 클릭하고 들어가면 자동으로 등록절차가 완료됩니다.


    [다음 포스팅]
    1. [AIP-L1] ADC iPhone Developer Program 등록하기
    2. [AIP-L2] Profile생성과 인증서등록 / Portal 설정
    3. [AIP-L3] XCode/iPhoneSDK 및 아이폰Device에 Hello! World! 출력하기
    4. Objective-C 의 특징

    아이폰/아이팟 개발의 시작

    마이크로소프트웨어 잡지 / 읽을거리 / Developer plus
    [출처 : http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=34071 ]


    최근 많은 사람들이 아이폰·아이팟에서 실행되는 프로그램을 만들어서 애플의 온라인 마켓 ‘앱스토어’에서 판매하길 원하고 있다. 하지만 아쉽게도 노력 대비 만족할 만한 수익으로 연결되지 않아 앱스토어를 위한 노력은 성공 가능성이 적다는 결론을 내릴 수 있다. 하지만 해외 마켓에서는 초창기의 앱스토어 마켓에서 국내 개발자들이 개발한 게임이나 애플리케이션이 단기간에 대량의 다운로드 판매고를 올리기도 했다.

    안경훈 linuxgood@gmail.com|리눅스와 맥 OS에 관심이 많으며, 모바일 디바이스에서 동작되는 사용자 중심의 프로그램을 개발하는 것에 흥미를 가지고 있다.현재 삼성SDS에서 근무 중이다


    애플은 보도자료에서 2009년 7월을 기준으로 약 1억 5,000만 건의 다운로드가 발생했고, 6만 5,000개 이상의 애플리케이션이 있으며, 77개국 이상, 10만 명 이상의 개발자가 ‘iPhone Developer Program’에 가입해 있다고 발표했다. 숫자만으로도 규모가 엄청나게 생각되지만 실제로 마음을 먹고 개발에 뛰어들어 완성도 있는 애플리케이션을 만들면 보람을 느낄 수 있다는 점에서 애플의 앱스토어는 충분히 매력이 있다.


    이제 아이폰·아이팟에서 자신의 애플리케이션을 동작시킬 준비가 됐는가? 그럼 시작해 보자.


    하드웨어와 아이폰 디벨로퍼 프로그램의 가입

    이 연재는 기본적으로 Objective-C 문법에 대한 자세한 언급보다는 개발 도구의 활용에 중점을 둔다.


    본격적으로 아이폰용 프로그램을 개발하기 위해서는 소프트웨어 이외에 준비해야 할 것들이 몇 가지 있다. 최소한 맥 OS X Leopard 이상이 실행될 수 있는 애플의 맥이 필요하다(맥 미니나 맥북 등으로 개발하는 개발자들도 많다). 개발에 필수적인 통합 환경과 최신의 SDK가 Leopard OS 이상에서 동작하기 때문이다. 그리고 당연히 아이폰이나 아이팟이 필요하다(1~3.5 세대 모두 사용이 가능하다). 이제 아이폰 디벨로퍼 프로그램(iPhone Developer Program)에 가입할 차례다. 특이하게도 애플은 아이폰이나 아이팟에 자신의 프로그램을 올려서 테스트 해 볼 경우에도 아이폰 디벨로퍼 프로그램에 가입해야 가능하도록 인증서를 통해 애플리케이션 개발 프로세스를 관리한다. 긍정적으로 다시 생각하면 이와 같은 관리 방법들이 개발자들을 아이폰 상에 붙잡아 두는 역할도 하는 것 같다. 다른 스마트폰처럼 기기마다 애플리케이션의 동작을 신경쓰지 않고 하나의 플랫폼에서만 개발이 가능하도록 하니 말이다.



    이 외에도 아이폰 시뮬레이터가 있다. 기본적으로 애플리케이션의 개발은 가능하지만 게임이나 메모리 관리에 신경을 써야 하는 프로그램들을 작성한다면 실제로 아이폰·아이팟을 갖고 있는 것이 좋다.


    먼저 디벨로퍼 커넥션(Developer Connection, http:// developer.apple.com/iphone/) 사이트를 방문해 등록 프로그램에 가입하도록 하자(가입 시작은 http://developer.apple.com /iphone/program/start/enroll/ 에서 할 수 있다).


    가입시 99달러를 내야하는 스탠다드 프로그램과 299달러를 내고 가입하는 엔터프라이즈 프로그램이 있다. 엔터프라이즈 프로그램은 기업용으로, 앱스토어를 통해 배포하는 것이 아니라 사내용 배포 등을 할 때 사용한다는 데서 차이가 있다. 자세한 내용은 <표 1>을 참조하길 바란다(앱스토어를 통해 자신의 애플리케이션을 판매하고자 하는 사람은 스탠다드 프로그램에 가입하면 된다).



    개인적으로 개발자 프로그램에 가입하고 가장 도움이 됐던 부분은 애플의 엔지니어들이 나와서 아이폰 프로그램 개발에 대해 설명하는 동영상이었다.



    이렇게 애플의 개발자 프로그램에 가입하고 나서 해야 할 일은 아이폰 SDK를 다운로드해 설치하는 것이다. <화면 3>은 2009년 10월 8일을 기준으로 다운로드 받을 수 있는 SDK 리스트이다. 자신의 아이폰 OS 버전과 맥 OS 버전을 먼저 확인하고 해당되는 SDK를 다운로드 받는다.



    <화면 4>와 같이 SDK를 다운로드 해 설치하면 Xcode라는 맥 OS용 통합 개발 환경과 각종 아이폰용 라이브러리가 Devel oper라는 폴더 아래에 설치되는 것을 볼 수 있다. 새로운 아이폰용 OS가 배포되고 나면 SDK도 비슷한 시기에 같이 배포되는 경우가 많으므로 가끔 체크해 보는 것이 좋다.


    SDK를 다운로드 받아 설치한 후 Developer 디렉토리에 있는 ‘About Xcode and iPhone SDK.pdf’라는 문서를 열어보면 SDK에 대한 설명이 자세히 나와 있다.



    SDK 구성과 주요 툴
    아이폰 SDK에는 개발에 필요한 여러 가지 유용한 도구들이 무료로 제공되고 있다. 아이폰 개발에 사용되는 대표적인 툴로는 메모리 릭이나 효율적인 사용을 모니터링 해 주는 Instruments, 가장 중요한 통합 개발 환경인 Xcode, UI 개발 환경인 인터페이스 빌더(Interface Builder, IB) 등이 있고, 실제 아이폰에서 테스트하지 않고 빠르게 디버깅하기 위해 아이폰 시뮬레이터 등이 제공된다(각 툴의 대략적인 설명은 <참고자료 1>를 참조하면 된다).


    이번 호에서는 SDK에서 가장 중요한 개발 도구인 Xcode에 포함된 템플릿을 중심으로 알아보자.







    연재에 사용된 Xcode의 정보


    Version : 3.2(10A432)
    Location : /Developer
    Applications :
       Xcode : 3.2(1610)
       Interface Builder : 2.3(732)
       Instruments : 2.0(1095)
       Dashcode : 3.0(328)
    SDKs :
       Mac OS X :
          10.4 : (8S2167)
          10.5 : (9J61)
          10.6 : (10A432)
       iPhone OS :
          2.0 : (5A345)
          2.1 : (5F135)
          2.2 : (5G77)
          2.2.1 : (5H11)
          3.0 : (7A341)
          3.1 : (7C144)
       iPhone Simulator :
          3.0 : (7A341)
          3.1 : (7C145)


    이 정보는 <About Xcode> 창에서 ‘More Info….’ 버튼을 클릭했을 경우 확인할 수 있다.


    Xcode

    윈도우 운영체제에 비주얼 스튜디오라는 개발툴이 있다면 맥 기반의 OS에는 Xcode라는 개발 환경이 있다. Xcode는 맥 OS용 프로그램을 개발할 때, 예전부터 오랜 기간 사용돼 왔으며 많은 개발자들로부터 검증 받은 통합 개발 환경이다. Xcode를 시작하면 <화면 6>과 같은 초기 화면을 볼 수 있다.



    새롭게 애플리케이션을 개발하기 위해서는 다른 개발 도구에서와 같이 프로젝트를 새로 만들면 된다.


    Xcode는 기본적으로 맥 OS X 환경의 프로그램과 아이폰 OS용의 애플리케이션 및 라이브러리를 개발할 수 있는 템플릿을 제공한다. 이번 호에는 기본적으로 제공되는 Xcode OS의 템플릿을 간략히 알아보려 한다. <화면 7>과 같이 6가지의 템플릿을 볼 수 있다. 각각의 템플릿은 지면 관계상 최대한 간략히 설명해 보겠다.



    Navigation-based Application
    첫 번째 템플릿인 Navigation-based Application은 <화면 8>과 같이 네비게이션 바를 표시할 때 사용된다.



    템플릿을 선택한 후 자동으로 생성된 코드를 그냥 빌드 해 보면 <화면 9>와 같은 형태가 나온다.








    Xcode에서 빌드하기


    Xcode에서의 빌드는 <화면 10>과 같이 아이콘을 클릭하거나 또는 단축키 <Command>+<enter>를 누르면 된다.



    <화면 10>과 같이 setting 형태의 버튼과 타이틀을 넣는 방법에는 여러 가지가 있다. 먼저 Xcode SDK의 UI 구성툴인 IB를 이용하는 방법을 살펴보자. Xcode 에디터에서 코드를 수정하는 것이 조금 필요하다.


    <화면 10>처럼 소스 브라우저 창에서 MainWindows.xib라는 파일을 더블클릭하면 IB가 실행된다. *.xib 파일은 IB에서 사용하는 UI의 프로젝트 파일에 해당된다. IB는 크게 4개의 메인 폼을 갖고 있다.


    <화면 11>은 IB에서 사용된 각종 컨트롤들을 아이콘 형태로 보여주는 뷰 윈도우이며, 해당 뷰의 설정을 위한 UI 디자인 창이 있다. 그리고 Attribute를 설정하는 창과 각종 라이브러리와 오브젝트들을 모아 놓은 Library 창이 있다. 여기서 Navigation Controller를 선택하고, Navigation item Attribute의 ‘Title’ 항목과 ‘Back Button’ 항목을 <화면 14>처럼 설정해 준다. 여기서 설정한 내용은 실시간으로 UI 디자인 창에 반영된다. 단, Back Button은 코드를 수정해야 볼 수 있다.



    이렇게 만들어진 내용을 IB에서 ‘File|Save’ 메뉴로 저장하고 다시 빌드하면 ‘Wi-Fi Networks’라는 타이틀이 보일 것이다. 그리고 ‘Settings’라는 아이템을 추가하려면 RootViewContr oller.m 파일에서 주석처리 돼 있는 함수를 다음과 같이 수정하면 된다.



    (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationItem.leftBarButtonItem = self.navigationItem.back BarButtonItem;
    }


    각각의 프로퍼티를 변경해 아이폰에서 사용되는 각종 Navigation 버튼을 구현할 수 있다.


    OpenGL ES Application



    아이폰 OS는 게임 등과 같이 화면 전환이 빠르게 요구되는 애플리케이션들을 위해 그래픽 라이브러리로 OpenGL ES(Open Graphic Library Embedded System)라는 라이브러리를 기본적으로 지원한다. OpenGL ES는 Khronos Group(http:// www.khronos.org/opengles/)에서 제공하는 OpenGL의 임베디드 버전이다. 2D와 3D 데이터를 표현하기 위한 C언어 베이스의 크로스 플랫폼 인터페이스이다. 이 템플릿을 추가하면 기존에 화면(View)을 그리기 위해 사용했던 CoreGraphics.framework 대신에 <화면 16>과 같은 2개의 프레임워크가 추가된다.



    역시 아무런 조작 없이 Xcode에서 ‘Build and Run’ 버튼으로 동작시켜 보면 <화면 17>과 같은 애니메이션 애플리케이션이 실행된다(박스가 상하로 움직이는 것을 볼 수 있다).



    <화면 18>은 OpenGL/ES 템플릿을 선택했을 때의 프로젝트 화면이다. Navigation 템플릿과 달리 여러 가지 리소스들이 포함된 것을 볼 수 있다.







    OpenGL에 대해 참고할 만한 사이트


    1. http://developer.apple.com/iphone/library/documentation /3DDrawing/Conceptual/

    OpenGLES_ProgrammingGuide/Introduction/Introduction.html
    : 애플에서 공식적으로 제공하는 OpenGL/ES 프로그래밍 가이드를 소개하는 페이지이다. 아이폰 OS에서 OpenGL ES를 활용한 프로그램과 프레임 버퍼를 이용하는 방법, Vertex Data, Texture Data 등을 활용해 만든 예제, 퍼포먼스 가이드라인, Texturetool을 사용하는 방법들을 설명해 준다.


    2. OpenGL ES API Registry(http://www.khronos.or/ registry/gles/)


    3. OpenGL ES 2.0 Reference Pages(http://www.khronos. org/opengles/sdk/docs/man/)


    4. OpenGL ES Framework Reference(http://developer. apple.com/iphone/library/documentation/OpenGLES/Reference/OpenGLES_Framework/index.html#//apple_ref/doc/uid/TP40007628


    5. 아이폰용 OpenGL ES 강좌 사이트(http://web.me.com/sma urice/AppleCoder/iPhone_OpenGL/iPhone_OpenGL.html)


    6. Khoronos group에서 제공하는 OpenGL ES SDK 매뉴얼(http:// www.khronos.org/opengles/sdk/docs/man/)


    Tab Bar Application
    다음으로 Tab Bar Application 템플릿을 살펴보자. Tab Bar에는 Application 뷰의 하단에 위치해 뷰를 전환하는 역할을 하는 버튼들이 모여있다. 네비게이션 바와 유사하며, 아이폰 OS의 기본 프로그램에도 많이 쓰여진다. <화면 20>는 Tab Bar의 여러 가지 유형을 보여준다.



    <화면 21>은 템플릿을 사용한 프로젝트를 만들고 바로 빌드한 모습이다. Tab Bar를 사용해 2개의 뷰를 보여준다.



    템플릿을 활용해 <화면 21>과 같이 2개의 뷰를 전환하는 예제에서는 각각의 뷰가 필요하다. IB에서 탭이 늘어날 때마다 Tab Bar Controller Attributes에서 ‘+’를 클릭한 후 탭과 별도의 뷰를 하나씩 늘려가면 된다.


    Utility Application
    네 번째로 Utility Application이라는 템플릿이 있다. 이 템플릿은 info 버튼이 포함된 Main view와 Navigation Bar를 가진 flipside 형태로 전환되는 뷰를 가진 애플리케이션을 만들 때 사용된다.



    아이폰 애플리케이션에서 설정 화면 등을 구성할 때도 자주 사용되는데, 아무런 수정도 하지 않고 템플릿을 로드하고 ‘Build and Run’ 했을 때 <화면 23>과 같은 화면을 볼 수 있다.


    이 템플릿은 IB로 디자인하기 위해 FlipsideView.xib, Main View.xib, MainWindow.xib와 같은 2개의 뷰와 1개의 Main Windows를 가진 리소스를 제공한다. 각각의 뷰에 해당되는 소스와 ViewController 소스가 템플릿으로 제공된다. 그리고 이들 뷰간의 동작들을 담당하기 위해 appDelegate가 역시 템플릿으로 제공된다. 이 템플릿은 MainView에 원하는 애플리케이션을 동작시키고 설정 항목들을 FlipsideView에 위치시킬 때 사용하면 좋을 것이다.


    View-based Application
    이 템플릿은 싱글 뷰를 가진 애플리케이션을 만들 경우 사용된다. 사실 싱글 뷰를 조작하기 위한 뷰 컨트롤러와 IB를 위한 간단한 nib 파일을 제공해 준다. 이 템플릿의 장점은 뷰가 많은 애플리케이션을 제작할 때 일일이 신경 쓰지 않고도 원하는 뷰와 뷰 컨트롤러를 가진 UI를 간단히 생성해주므로 작업 능률을 올릴 수 있다는 것이다.


    Windows-based Application
    마지막으로 Windows-based Application 템플릿이 있다. 이 템플릿은 하나의 MainWindows와 AppDelegate만으로 구성돼 있다. 개인적으로 IB를 사용해 UI 작업을 할 때 가장 자주 사용한다. 이 템플릿 위에 뷰와 Object들을 배치시키고 애플리케이션을 만들 수 있다. 버튼을 누르면 팝업창이 뜨는 간단한 애플리케이션 예제를 만들어 보자.


    1) MainWindows.xib를 클릭해 IB를 시작한다.



    2) IB의 Library 창에서 View Object를 Windows 창으로 드래그한다. 그 후 이 뷰를 메인 뷰로 사용할 것이기 때문에 Class 명을 myView로 수정한다.


    3) 이제 Image View Object와 Round Rect Button Object를 가져와 배치한다. Object를 뷰에 올리는 방법은 이전 단계에서 했던 것과 같이 드래그를 하면 된다. 그리고 image View Attributes 창에서 aimage.png라는 그림 파일을 불러온다. 이 그림 파일은 처음에 프로젝트를 만든 후 Finder로부터 Project tree로 드래그해서 추가해 놓은 것이다(필자는 Resources 디렉토리에 저장했다.).



    4) 이제는 myView에 만들어진 Object들의 IBOutlet을 만들고 event 코드를 작성할 차례다. IBOutlet을 IB를 사용해 Object를 포함하는 View를 만들었을 경우 각각의 Object를 컨트롤하기 위해서 만들어 준다. 최종 동작은 해당 버튼을 클릭했을 때 info 배너가 동작하도록 하는 것이다.


    IB에서 myView에 해당되는 소스파일을 프로젝트로 넣기 위해 저장한다. IB 메뉴에서 ‘File|Write Class Files’를 선택한다. 이 때 myView.h, myView.m 파일을 프로젝트에 추가할 것인지를 묻는 창이 뜬다. 체크 버튼을 체크해 주고 해당 파일을 프로젝트에 ‘Add’ 한다.



    5) 프로젝트에 IB에서 만든 UI 소스가 포함된 후 먼저 my View.h 파일의 내용을 <리스트 1>과 같이 수정한다.






    <리스트 1> myView.h 파일의 내용 수정


    #import <UIKit/UIKit/h>
    #import <Foundation/Foundation.h>


    @interface myView : UIView {
       IBOutlet UIButton *pBtn;   // pBtn을 눌렀을 때 showInfo가 동작
       IBOutlet UIImage *pImg
    }
    -(IBAction) showInfo;
    @end


    또 실제 Alert 메시지 창을 보여주는 함수 내용은 myView.m에서 <리스트 2>와 같이 작성한다.






    <리스트 2> Alert 메시지 창 보여주는 함수


    #import “myView.h”


    @implementation myView
    -(IBAction)showInfo {
    UIAlertView *baseAlert = [[UIAlertView alloc] initWithTitle:ni]
       message : @”showInfo가 실행되었\n습니다.”
       delegate : self
       cancelButtonTitle : nil
       otherButtonTitles : @”확인”, nil];show];release];
    }
    @end


    6)  ‘누르세요’ 버튼을 터치다운 했을 경우 showInfo()라는 함수가 실행되도록 만들기 위해 IB에서 먼저 해 줘야 할 일이 있다. <화면 27>과 같이 버튼 Object에서 마우스 오른쪽 버튼을 클릭해 ‘Touch Down’ 이벤트를 드래그 한 후 myView로 가져가면 showInfo 함수를 선택할 수 있도록 활성화된다.



    7) 이제 저장하고 Xcode에서 빌드하면 showInfo()가 <화면 28>과 같이 동작한다. 이런 방식으로 각각의 Object들과 터치 이벤트 등을 연결할 수 있다.



    이로써 iPhone SDK 중에서 Xcode에 제공하는 기본 템플릿들을 중심으로 살펴봤다. Xcode는 적지 않은 기간동안 안정성과 우수성이 충분히 입증된 만큼 능숙하게 잘 활용하면 아이폰 OS나 맥 OS 기반의 애플리케이션을 개발하는 동안에는 개발자에게 가장 최적의 환경을 제공해 줄 것이라고 생각한다.


    다음 호에는 기존에 C/C++ 환경에서 개발하던 개발자들을 위해 Objective-C와 기존의 C/C++ 문법의 차이점과 유사점을 코드를 통해 살펴보자.


    참고자료
    1. http://developer.apple.com/iphone/library/referencelibrary/GettingStarted/ URL_Tools_for_iPhone_OS_Development/index.html#//apple_ref/doc/uid/TP40007593