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일 화요일