본문 바로가기
교육/아이폰 앱 개발 기초 과정

[2010.7.3 (토)] 아이폰 앱 개발 기초 과정 (첫째날)

by 호군 2010. 7. 21.
반응형

 2010년 7월 3일 비트교육센터 본원에서 재직자를 위해 '아이폰 앱 개발 기초 과정'을 개강했다. 직장인에게는 환급 등으로 교육비를 지원 해주고 있었고, 학생들에게는 30% 할인된 가격으로 수강 할 수 있게 이벤트도 진행 하고 있었다. 

 강의 시작시간은 9시로 예정되었지만 대다수의 직장인 분들이 지각을 하셔서 조금 늦게 시작하게 되었다. 수강생은 연세가 많으신 분과 우리처럼 아직 학생인 사람들로 약 15명정도가 수강하게 되었다. 아..그리고 가장 중요한 강사님은 고준일 강사님이 강의를 하게 되었다. 강사님의 이메일 주소는 goya@vinia.net 이다.

 그럼 요번에 들은 아이폰 앱 개발 기초 과정을 정리 할 것이다.


 ◎ 아이폰 앱 개발 최소사양
   - Intel Mac  
   - OS X 10.5 이상 (10.6 추천)
 

1. iOS 구조(iPhone OS)


UI와 Foundation을 제공하는 레이어

그래픽과 오디오를 제공하는 레이어

Media, CocoaTouch 레이어에 사용되기 쉽게 wrapping 되어있는 레이어

iso의 기본이 되는 레이어




2. MacOS 와 iOS 비교

 
iPhone의 OS는 처음부터 만들어진 OS가 아니다. MacOS에서 iPhone에 맞게 가져온 OS이다. 그래서 iPhoneOS(이하 iOS)의 Cocoa Touch는 MacOS의 Cocoa 와 유사하다. 다른점이 있다면 화면의 크기와 해상도가 달라지면서 Appkit이 UIkit으로 대체된 점이다.
 Cocoa의 Appkit과 Foundation은 제공되는 클래스들 앞에 NS라는 접두사를 붙인다. 하지만 Cocoa Touch의 Foundation은 NS를 붙이지만 UIkit은 UI라는 접두사를 붙이고 있다. NS는 스티븐 잡스가 애플로 복귀하기 전의 회사인 NextStep에서 만든 운영체제가 MacOS 10의 근간을 이루고 있기 때문에 호환을 위해 사용되어지고 있다. 
 아래 표는 Cocoa와 Cocoa Touch가 제공되는 클래스가 유사하다는 것을 보여준다.
               Cocoa            Cocoa Touch 
Appkit
  NSView, NSButton
  NSTableView
UIkit
  UIView, UIButton
  UITableView 
Foundation
  NSString, NSArray
  NSThread
Foundation
  NSString, NSArray
  NSThread 

 Xcode에서 MacOS기반의 어플리케이션은 nib파일을 열어 Interface Builder를 실행하는 반면 iOS기반의 앱은 xib파일을 열어 Interface Builder를 실행한다.
 그리고 MacOS의 어플리케이션 개발은 가비지 컬렉터가 동작하기 때문에 메모리 관리가 편리하지만 iOS는 Instruments 프로그램을 이용해서 메모리를 꾸준히 관리해줘야 한다.



3. Object-C
 일반적으로 C는 해더파일은 *.h 파일로 구현파일은 *.c 파일로 되어있다. 하지만 Object-C는 해더파일은 *.h 파일로 구현파일 *.m 파일로 되어있다.
 아래 그림은 *.h와 *.m 파일의 기본 구조이다.
                             *.h 파일              *.m 파일 
@interface 클래스명 : 슈퍼클래스 <프로토콜>
{

......
}
@end
@implement 클래스명

......


@end

C나 C++ 등의 언어를 사용하다가 Object-C를 접하게 되면 메소드 문법이 어색하다. C/C++에서는 함수명과 매개변수와의 구분은 괄호( '(', ')' )를 사용하여 두 부분으로 구분한다. Object-C에서는 '어디부터 어디까지가 함수명이고, 어디부터 어디까지가 매개변수다'라고 말하기가 애매하다. Object-C의 함수는 함수명:매개변수 함수명:매개변수 ... 이런 형식으로 되어있다. 
 아래는 C++ 스타일의 함수와 Object-C 스타일의 함수를 보여주고 있다.
 C++ 스타일
 myView->drawGradient(aquaGradient, 0.0, 1.0, YES);
 Object-C 스타일
 [myView drawMyGradient:aquaGradient fromValue:0.0 tovalue:1.0 opaque:YES];

 서브클래스, 델리게이트, 프로토콜에 대해서 찾아보길 바라며, IBOutlet, IBAction, id, property 에대해서도 알아보기를 바란다. 또한 NSObject 클래스에 대해서도 알아두면 많은 공부가 될 것이라고 생각한다.



4. Model-View-Controller (MVC)
 MVC모델은 코코아 프레임워크의 근간을 이루는 디자인 패턴이다. MVC는 모델과 뷰와 컨트롤러를 각각 분리하여 뷰가 변경되거나 모델이 다른 뷰를 이용해야 할 경우에 Controller만 수정하면 되기 때문에 변경을 국지화 한다.
  아래 기름은 Model, View, Controller의 관계를 그림으로 표현한 것이다.

 XCode에서도 이 MVC가 적용된 것을 알 수 있다.
 View는 *.xib 파일을 실행하면 Interface Builder가 실행된다. View가 코드에서 분리된 것을 알 수 있을 것이다. 
 Model과 Controller는 '프로젝트명AppDelegate'이다. 이 부분은 개발자가 Model과 Controller를 나눠서 프로그램을 개발해야한다. 한마디로 C코드처럼 절차식 언어로 작성하는 것이 아니라 객체지향 언어와 같이 객체로 구분하여 서로의 역활에 맡게 동작하도록 하라는 것이다.



5. Tip
◎ 응용프로그램에 있는 파일들은 즉시 실행이 되지만 폴더이다.
    (Finder로 접근 후 오른쪽 버튼을 클릭 후 '패키지 내용 보기'를 클릭하면 패키지가 포함하고 있는 파일들을 볼 수 있다)
◎ XCode의 경로는 MacihtoshHD/Developer/Application/ 에 있다.
    - xcode : 개발툴
    - Instrument : 메모리관리
    - DashCode : 하이브리드 앱 개발에 이용
◎ 하이브리드 앱 / 네이티브 앱

◎ UI Guide
    - iPhone Human Interface Guidelines 문서를 참고한다.
      (아이폰의 UI를 따름으로서 유저에게 친숙한 UI를 사용한다)
◎ XCode에서 클래스 멤버변수의 이름을 변경시에는 Interface Builder를 확인해야한다.
    (Interface Builder에서 변수이름과 UI개체들을 연결하기 때문에 이름을 변경시에 다시 연결 시켜줘야한다)

 지금까지 간단한 이론적인 이야기만 적었지만 예제를 직접 해보고 격어봐야 진정한 지식이 된다고 본다. 저 역시 강사님과 함께 한번씩 따라하는 정도였기에 꾸준한 노력을 계속 해나갈 것이다. 그럼 둘째날을 기대하며....
반응형