Objective-C




                  프로젝트 구성
                  By Changhoon Park
    Objective-C
                  http://www.wawworld.me
                                           Last Update : 2011. 08. 28

11년 10월 4일 화요일
인터페이스 부분 ( .h 파일 )                구현 부분 ( .m 파일 )

    • 클래스를 사용하기 위해 외부에 노출              • 클래스가 실제로 어떻게 동작하는지
    • 클래스 선언                               포함
      - @interface 키워드                 •   클래스 정의
      - 메소드 호출                             - @implementation 키워드
      - 상속, 컴포지션 정보                        - 메소드를 구현하는 코드
    • 공용 struct 정의, enum 상수, #define,   • 글로벌 변수 정의,
        extern 글로벌 변수                      지역 변수로 사용할 struct 정의




             2

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                               By Changhoon Park
                                                                   http://www.wawworld.me



11년 10월 4일 화요일
Xcode에서 새 파일 만들기




             3

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                     By Changhoon Park
                                                        http://www.wawworld.me



11년 10월 4일 화요일
의존성 (dependency)



                                      두 객체 사이의 관계


                   • Slant6는 Engine과 상속 관계                 Engine
                     - Slant6는 Engine에 의존성을 갖음
                                                         - description
                     - Engine의 인스턴스 변수가 추가되면
                     - Slant6는 다시 컴파일 되어야 함
                                                            Slant6
                                                         - description




             4

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                                         By Changhoon Park
                                                                            http://www.wawworld.me



11년 10월 4일 화요일
의존성 (dependency)


                                두 개 이상의 파일에서 존재
                        헤더 파일과 헤더 파일을 포함하는 소스 파일
                 만일 헤더 파일(.h) 이 변경되면 종속적인 모든 소스파일을 다시 컴파일



            Tire.h           Engine.h
                                        • Tire,h Engine,h가 변경된다면
                                          - Car.m도 변경 사항을 적용하기 위해
                                            다시 컴파일 해야 한다.
                     Car.m




             5

                     프로젝트      인터페이스와 구현
                               크로스 파일 의존성
    Objective-C
                               실습
                                                                    By Changhoon Park
                                                                       http://www.wawworld.me



11년 10월 4일 화요일
재 컴파일의 문제


                         Thing3.h를 수정하면 Thing1.h까지 다시 컴파일
                             Xcode는 모든 의존성을 추적해서 처리




                               Thing1.h     Thing2.h   Thing3.h




             6

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                                  By Changhoon Park
                                                                     http://www.wawworld.me



11년 10월 4일 화요일
컴퍼지션

                              - 컴파일러가 단지 이름만 필요한 경우
                          - 포인터 객체를 만들기 위한 클래스 이름만 필요


         #import <Cocoa/Cocoa.h>             #import <Cocoa/Cocoa.h>

         #import "Engine.h"                  @class Tire;
         #import "Tire.h"                    @class Engine;

         @interface Car : NSObject           @interface Car : NSObject
         {                                   {
             Tire *tires[4];                     Tire *tires[4];
             Engine *engine;                     Engine *engine;
         }                                   }
         ....                                ....
         @end // car                         @end // car




             7

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                                         By Changhoon Park
                                                                            http://www.wawworld.me



11년 10월 4일 화요일
컴퍼지션


                    - 컴파일러가 클래스 전체의 정의를 필요한 경우




                              #import "Car.h"
                              #import "Engine.h"
                              #import "Tire.h"

                              @implementation Car

                              .....

                              @end // Car




             8

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                    By Changhoon Park
                                                       http://www.wawworld.me



11년 10월 4일 화요일
컴퍼지션

                              - 컴파일러가 단지 이름만 필요한 경우
                          - 포인터 객체를 만들기 위한 클래스 이름만 필요


         #import <Cocoa/Cocoa.h>             #import <Cocoa/Cocoa.h>

         #import "Engine.h"                  @class Tire;
         #import "Tire.h"                    @class Engine;

         @interface Car : NSObject           @interface Car : NSObject
         {                                   {
             Tire *tires[4];                     Tire *tires[4];
             Engine *engine;                     Engine *engine;
         }                                   }
         ....                                ....
         @end // car                         @end // car




             9

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                                                         By Changhoon Park
                                                                            http://www.wawworld.me



11년 10월 4일 화요일
실습




     1. 05.03 CarParts-2.zip를 분해하기

     2. 각 클래스는 헤더 파일(.h)과 구현 파일(.m)로 구성
        Tire, Engine, Car : 재컴파일의 기본 상식
        Slant6, AllWheatherRadial : 포함과 상속

     3. 수정한 .m과 .h 그리고 결과화면 스샷을 아지트에 올리기




            10

                  프로젝트   인터페이스와 구현
                         크로스 파일 의존성
    Objective-C
                         실습
                                             By Changhoon Park
                                                http://www.wawworld.me



11년 10월 4일 화요일

프로젝트 구성

  • 1.
    Objective-C 프로젝트 구성 By Changhoon Park Objective-C http://www.wawworld.me Last Update : 2011. 08. 28 11년 10월 4일 화요일
  • 2.
    인터페이스 부분 (.h 파일 ) 구현 부분 ( .m 파일 ) • 클래스를 사용하기 위해 외부에 노출 • 클래스가 실제로 어떻게 동작하는지 • 클래스 선언 포함 - @interface 키워드 • 클래스 정의 - 메소드 호출 - @implementation 키워드 - 상속, 컴포지션 정보 - 메소드를 구현하는 코드 • 공용 struct 정의, enum 상수, #define, • 글로벌 변수 정의, extern 글로벌 변수 지역 변수로 사용할 struct 정의 2 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 3.
    Xcode에서 새 파일만들기 3 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 4.
    의존성 (dependency) 두 객체 사이의 관계 • Slant6는 Engine과 상속 관계 Engine - Slant6는 Engine에 의존성을 갖음 - description - Engine의 인스턴스 변수가 추가되면 - Slant6는 다시 컴파일 되어야 함 Slant6 - description 4 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 5.
    의존성 (dependency) 두 개 이상의 파일에서 존재 헤더 파일과 헤더 파일을 포함하는 소스 파일 만일 헤더 파일(.h) 이 변경되면 종속적인 모든 소스파일을 다시 컴파일 Tire.h Engine.h • Tire,h Engine,h가 변경된다면 - Car.m도 변경 사항을 적용하기 위해 다시 컴파일 해야 한다. Car.m 5 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 6.
    재 컴파일의 문제 Thing3.h를 수정하면 Thing1.h까지 다시 컴파일 Xcode는 모든 의존성을 추적해서 처리 Thing1.h Thing2.h Thing3.h 6 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 7.
    컴퍼지션 - 컴파일러가 단지 이름만 필요한 경우 - 포인터 객체를 만들기 위한 클래스 이름만 필요 #import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h> #import "Engine.h" @class Tire; #import "Tire.h" @class Engine; @interface Car : NSObject @interface Car : NSObject { { Tire *tires[4]; Tire *tires[4]; Engine *engine; Engine *engine; } } .... .... @end // car @end // car 7 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 8.
    컴퍼지션 - 컴파일러가 클래스 전체의 정의를 필요한 경우 #import "Car.h" #import "Engine.h" #import "Tire.h" @implementation Car ..... @end // Car 8 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 9.
    컴퍼지션 - 컴파일러가 단지 이름만 필요한 경우 - 포인터 객체를 만들기 위한 클래스 이름만 필요 #import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h> #import "Engine.h" @class Tire; #import "Tire.h" @class Engine; @interface Car : NSObject @interface Car : NSObject { { Tire *tires[4]; Tire *tires[4]; Engine *engine; Engine *engine; } } .... .... @end // car @end // car 9 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일
  • 10.
    실습 1. 05.03 CarParts-2.zip를 분해하기 2. 각 클래스는 헤더 파일(.h)과 구현 파일(.m)로 구성 Tire, Engine, Car : 재컴파일의 기본 상식 Slant6, AllWheatherRadial : 포함과 상속 3. 수정한 .m과 .h 그리고 결과화면 스샷을 아지트에 올리기 10 프로젝트 인터페이스와 구현 크로스 파일 의존성 Objective-C 실습 By Changhoon Park http://www.wawworld.me 11년 10월 4일 화요일