iPhone Dev

아이폰 개발 정리 2

HyperMind 2010. 11. 7. 23:19

* SDK 정리

 

1. 패턴 정리

    1)  MVC 패턴

       :  View Model은 독립적인 구조 (의존성이 전혀 없다.)

         - Model : 뷰에서 보여지는 데이터

            ==> 파일, SQLite, 네트워크 서버

         - View : 화면, 보여지는 부분

            ==> Interface Builder (IB) 툴을 이용

            ==> *.xib (nib 파일)

         - Controller : View Model을 서로 연동시키는 역할.

            ==> Objective-C 클래스로 작성

            ==> *.h (헤더파일) , *.m (구현파일) 생성

 

     2) delegate 패턴

       : 사전적 의미 => '위임하다'

       : 정의

          => 요청한 클래스에서 처리하는 것이 아니고, 다른 클래스로 요청을 떠 넘기는 방식

       : 특징

          => 확장성

          => 의존성이 떨어진다. (장점)

 

    3) target/action  패턴

       : IB 없이 구현하는 액션메소드 처리 방법

       : UIControl 하위 클래스에서만 사용 가능

 

2. Xcode가 아이폰을 개발할 때 'template'을 제공

   

() 창 닫을 때 : cmd - W

() .h  <-> .m 파일 전환 : alt - cmd - [위화살표]

() 저장 :  cmd - S

 

3. SDK 실행

     1) main 메소드(UIApplicationMain)가 실행

         : UIApplication을 생성한다.

         : 하나의 어플을 관리하는 클래스  -> File's Owner

     2) delegate의 메소드가 수행된다.

         : callback 메소드 (시스템이 호출하는 메소드)

 

      라이브러리 :  cmd - shift - L

      어트리뷰트 :  cmd - 1

 

     (IBAction) = (void)

 

     실행 :  cmd - shift - R

 

     3) XXXViewController 가 수행

        : callback 메소드

        : did~메소드가 수행

  

                                                     뷰콘트롤러

       (버튼)          <----------       UIButton (IBOutlet)

 

      (버튼 클릭)    -------------->  buttonPressed (IBAction)

 

====> 어플 개발 방법

       1) IB로 생성하는 방법

       2) IB 없이 생성 방법  --->  이것으로 가는 것이 Best

 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.

- (void)viewDidLoad {

    [super viewDidLoad];

}

 

       3) IB 와 날코딩 혼합 방법

 

 

4. UIKit

    - UIKit Framework Reference 참조

     : 계층구조

 

                                 NSObject

                                       |

                                UIResponder

                                       |

        +-------------------+---------------------+

    UIView                 UIApplication            UIViewController   

        |                                                               |               

   -XXXView                                           -UITabBarController, UITableViewController

   -UIWindow                                            UINavigationController

    -UIBar

   - UILabel

    -UIControl    

          |

          UIButton

          UITextField

          UISwitch

          UISlider

          UIDataPicker

 

   * UIControl에서만 IBAction 설정 가능

 

 

   (id)  -> 모든 클래스를 다 받을 수 있는 타입 (다형성)

 

5. UIButton

 

6. target/action  패턴

 

    addTarget:

    action:SEL 타입

 

    * SEL 타입

    => 메소드를 클래스화

    => @selector(메소드명);

 

    -(void)aaa{}

 

      SEL a = @selector(aaa);     --> 메소드를 동적으로 변경할 수 있게 한다.

 

7. UITextField

    : 한줄 입력가능한 컴포넌트

     ( UITextView : 여러줄 입력가능)

    : 자동으로 가상키보드가 생성된다. (자동으로  hide 안됨  => 코드 작업 필요 )

    : 가상키보드의 종류

      - 숫자, 이메일, 문자 등 …,

 

    : 가상 키보드 제거

       => 해당 컴포넌트의 포커스 제거 (resignFirstResponder 이용)

            : becomeFirstResponder 로 포커스 설정

       => delegation 패턴 이용  << 매우 중요 >>

            : UITextFieldDelegate  프로토콜

              1) 준수

              2) 해당 컴포넌트와 delegate  연결

              3) delegate 메소드 구현

 

      ** for 반복문  --> 컬렉션 반복문   <<중요>>  예제 18

      for ( NSString *n in array) {

      }

     

      ** type 체크하는 방법  --> 예제 16

 

8. 통지 (NSNotification)

    : 개요

     => 하나의 어플에서 특정 이벤트 발생 시 자동으로, 발생된 이벤트정보를 가진

          NSNotification의 하위클래스를 자동생성한다.

    => 개발자 입장에서는 발생시켜주는 NSNotification을 얻을 수 있다.

 

9. UIApplication

   =>  하나의 어플을 관리하는 특별한 클래스

     ** singleton 패턴 : 객체를 딱 1개만 만들어서 사용하는 것

   <참고>        //deprecated : 더 좋은 메소드가 나왔으므로 지금 메소드는 사용을 자제하라는 말

 

10. UISlider

 

11. UISwitch

 

12. 이미지 보여주기

     : UIImage => 이미지 파일을 저장

     : UIIViewImage