제3장. Objective C[오전+오후]

2012. 3. 28. 10:14Language/iPhone

반응형
AutoReleasePool

먼저 풀을 생성
================
객체1               객체2
================

Pool        // 미리 풀을 만듬.

[pool release]


카테고리 : 동적 런타임 디스패치(Dynamic Runtime Dispatch)

카테고리는 기존의 클래스에 새 메서드를 추가 하는 방법이다.(상속 받지 않고도 가능!) - 만능은 아니다!

단점 : 

1) 인스턴스 변수를 새로 추가 할 수 없다.

2) 이름 충돌-카테고리 메서드가 기존의 메서드와 동일한 이름을 갖게 되면 카테고리 메서드가 우선시 된다.

기존 메서드를 돌려 사용할 방법이 없다.(하이딩 된다.)

장점 :

1) 클래스 구현을 여러파일로 나누거나, 여러 플랫폼으로 나눌 때


카테고리로 구현 분리하기

거대한 클래스의 구현을 한 파일에 다하기는 힘듬. 카테고리를 논리적인 그룹으로 분리.


[소스]


몇개의 그룹으로 작업 분할(카테고리)

[소스]


프로토콜

프로토콜은 선언만 하며, 구현은 하지 않는다. 규약만 지정.

프로토콜로 인하여 다중 상속이 가능하다. 

UI 할 때 약방의 감초 처럼 애플에서 만든 프로토콜을 채택한다고 한다.

여기에서는 상속이라는 말보다 프로토콜을 채택한다고 흔히 말한다.

채택할려면 프로토콜 이름을 클래스의 @interface 선언에 나열해주어야 한다.

- 자바나 C#의 인터페이스와 같다.


다시 정리 해보면

* 프로토콜 : 규약, 규격, 호환성을 위한 부분.

(USB단자, PCI버스)

                            홈씨어터

                            삼성TV

                 (영상 : 컴포넌트, 컴포지트 단자)

      ---------------------->

소니블루레이플레이어                                데논 엠프

      ---------------------------------------->

    (음성 : 광단자, 동축단자)


[선언]

@protocol NSCopying

-(id)copyWithZone:(NSZone *)zone;   // copyWithZone 메소드를 반드시 구현해야한다. (강제사항)

@end

* 구현

// 아래와 같이 < >  사이에 있는것이 프로토콜 명이다. 해당 클래스의 메소드는 반드시 구현되어야 한다.

@interface Engine : NSObject <NSCopying>

@end // Engine


전체적인 소스


Fondation 프레임 워크

1) NSNumber : 값을 객체형식으로 다룰 경우에 사용.

힙에다가 저장 해놓고 씀.  값을 살짝 포장했다고 보면 된다.

2) NSRange : 문자열을 검색할 경우 사용.(구조체 형식임.)

Hello,Objective C!

         7           15

range.location=7, range.length=15-7

3) NSString : 문자열을 처리하는 클래스

 - NSString이 가지고 있는 메소드 : stringWithFormat,  isEqualToString: , hasPrefix

4) NSMutableString : 문자열을 변경해야 하는 경우

 - stringWithCpapcity


5) NSarray : 배열


반응형

'Language > iPhone' 카테고리의 다른 글

제4장. Objective c 하편  (0) 2012.03.29
제 4장. Objective C  (6) 2012.03.29
제2장. Objective C (하편)  (0) 2012.03.27
제 2장. Objective C  (0) 2012.03.27
(+)와 (-)함수의 차이는?  (0) 2012.03.26