오브젝트C2010. 9. 3. 01:14
Objective-C 간단 정리.

■ 오브젝트의 생성 (원문)


모든 오브젝트는 메모리의 Heap에 할당된다.
스택에 저장되는 오브젝트는 없다.  => Objective-C는 심플함을 추구하기 때문에.


이 강의에 OOP의 간략한 개념과 용어가 나오지만 다른언어와 같기때문에 생략한다.


 

■ 용어
Message expression
[receiver method: argument] <= 이 전체를 메세지 표현이라고 한다.
Message
[receiver method: argument] <= 메소드 이후를 메세지라고 한다.
Selector
[receiver method: argument] <= 메소드와 무슨차이냐고 한다면... 메소드를 셀렉터라고도 한다.
Method
The code selected by a message

■ 셀렉터 정의
Selector는 메소드를 인식할 수 있는 이름으로 SEL 이라는 타입으로 정의할수 있다.
SEL action = [button action];


함수포인터와 비슷한 개념이라고 생각하면 된다.


셀렉터의 이름에는 콜론을 포함하여야 한다.

-(void)setName:(NSString *)name age:(int)age;
위의 메소드를 셀렉터로 정의하려면 아래와 같이 된다.
SEL sel = @selector(setName:age:);


■ 셀렉터 활용

오브젝트가 셀렉터에 응답하는지 알아볼 수 있다. 강의1-과제B의 4번에 해당하는 내용이다.
id obj;
SEL sel = @selector(start:);
if ([obj respondsToSelector:sel]) {
    [obj performSelector:sel withObject:self]
}


셀렉터를 이용한 아래와 같은 디자인패턴을 코코아에서 많이 찾아볼 수 있다.
-(void)setTarget:(id)target;
-(void)setAction:(SEL)action;


 

■ description 메소드

모든 오브젝트의 슈퍼클래스인 NSObject안에 구현되어 있다.
- (NSString *)description;


이 메소드를 오버라이드하여 클래스의 상세 내용을 돌려주도록 하면
디버깅할때 매우 유용하다.

[NSString stringWithFormat: @”The answer is: %@”, myObject];


아래와 같이 로그로 출력할 수 있다.
NSLog([anObject description]);


 

■ Foundation Framework


코코아 프레임워크는 많은 유용한 소스들의 집합체이다.
Foundation Framework는 그중 가장 기초가 되는 부분이며 아래 내용을 포함한다.


• 값와 컬렉션 클래스
• User 디폴트
• 아카이빙
• 통지 (Notifications)
• Undo 매니져
• Tasks, 타이머, 스래드
• 파일 시스템, 파이프, I/O, 번들


NSObject - 루트클래스이며 메모리관리, 오브젝트 비교, introspection 을 구현한다.
NSString - 유니코드를 지원하기 때문에 코코아에서 “char *” 대신 사용한다.

 * 편집 가능한 String은 NSMutableString이다.

정수 - NSString은 편집이 불가능 하기 때문에 NSString의 인스턴스가 바로 정수이다.

NSNumber - int, double, float 등을 캡슐화한 클래스이다. 
 * 숫자를 컬렉션에 저장하기 위해선 NSNumber로 생성해야 한다.

NSData / NSMutableData - 임의의 바이트집합
NSDate / NSCalendarDate - 시간과 날짜 관리

Objective C에서는 편집 가능 불가능 두가지 오브젝트를 따로 두고 있다.


예를 들어 컬렉션에는 Array/Dictionary/Set 이 있는데 이 세가지 모두 편집 가능 타입과 불가능 타입이 있다.


편집 불가능: NSArray, NSDictionary, NSSet
편집 가능: NSMutableArray, NSMutableDictionary, NSMutableSet


편집 불가능 컬렉션은 위험부담없이 공유할 수 있으며 원치않는 변경을 방지할 수 있다.
편집 가능 컬렉션들은 대체로 약간의 퍼포먼스 오버헤드가 있다.

<컬렉션>
Array - 오브젝트를 순차적으로 저장
Dictionary - 키/값의 세트로 저장
Set - 유니크 오브젝트가 비순차적으로 저장되어 있는 구조

더 자세한 내용은 아래 링크를 참조하라고 나와있다.

http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC



출처 : http://blog.naver.com/PostView.nhn?blogId=katchup00&logNo=10075952516
Posted by 오늘마감

댓글을 달아 주세요