1. assign - 지정한 객체에 메모리를 할당한다.

2. retain - 지정한 객체의 값을 메모리에 저장한다. retain count 1 증가

3. release - 지정한 객체를 메모리에서 삭제한다. retain count 1 감소

4. autorelease - 객체가 소멸될때 메모리에서도 장동으로 삭제된다.

5. drain - 지정한 객체를 메모리에서 비우는 기능을 한다. release하고 비슷한 기능을 하지만 autorelease pool에 있는 객체를 메모리에서 완전히 삭제 할 때 사용 한다는 점이 틀리다.


할당과 저장.... 할당은 자바에서 new해서 메모리 공간만 만들어 놓는거라고 생각되고, 저장은 공간에 값을 넣는 거라고 생각하면 됨?

신고
NSMutableData는 byte배열을 wrapping해 놓은 객체이다.

Creating and Initializing an NSMutableData Object
+ dataWithCapacity:
+ dataWithLength:
– initWithCapacity:
– initWithLength:
Adjusting Capacity
– increaseLengthBy:
– setLength:
Accessing Data
– mutableBytes
Adding Data
– appendBytes:length:
– appendData:
Modifying Data
– replaceBytesInRange:withBytes:
– replaceBytesInRange:withBytes:length:
– resetBytesInRange:
– setData:
신고
- NSCalendarDate의 인스턴스는 날짜와 시간, 시간대, 형식 문자열을 가지고 있으며 NSDate를 상속한다.

- 자주 사용하는 메소드
+ (id)calendarDate -> 로케일에 맞는 기본 형식에 현재 날짜와 시간으로 초기화된 객체를 생성하고 리턴한다.

+ (id)dateWithYear:(int)year month:(unsigned)month day:(unsigned)day hour:(unsigned)hour minute:(unsigned)minute second:(unsigned)second timeZone;(NSTimeZone *)aTimeZone -> 자동으로 메모리에서 해제되는 객체를 리턴한다. 특히 특정 값으로 캘린더 객체를 초기화하여 생성하고 리턴한다.
ex) NSTimeZone *pacific = [NSTimeZone timeZoneWithName:@"PST"];
NSCalendarDate *hotTime = [NSCalendarDate dateWithYear:2000 month:8 day:3 hour:16 minute:0 second:0 timeZone:pacific];

- (NSCalendarDate *)dateByAddingYears:(int)year months:(int)month days:(int)day hour:(int)hour minutes:(int)minute seconds:(int)second ->연도, 달, 날짜, 시간, 분, 초를 지정된 인수만큼 가감한다. 양수는 미래, 음수는 과거를 나타낸다.
신고
- NSString은 유니코드 문자열의 버퍼다. 문자열 관련된 모든 처리를 담당한다.

- 자주 사용되는 메소드
- (id)initWithFormat:(NSString *)format, ..... -> sprintf와 같은거~ format은 %d와 같은 토큰이 포함된 문자 사용
- (unsigned int)length -> 리시버에 있는 문자의 수를 리턴한다.
신고
- NSArray는 다른 객체 포인터들의 목록이다.

- 자주 사용되는 메소드
- (unsigned)count -> 현재 배열의 객체의 수를 리턴한다.
- (id)objectAtIndex:(unsigned)i -> i번째 위치한 객체를 리턴한다.
- (id)lastObject -> 현재 배열의 맨 마지막 객체를 리턴한다.
- (BOOL)containsObject:(id)anObject -> 현재의 배열에 anObject오브젝트를 포함하면 YES 아니면 NO
- (unsigned)indexOfObject:(id)anObject -> 리시버에서 anObject가 있는지 가장 낮은 색인부터 검색하  여 배열의 색인 값을 리턴한다. 찾지 못하면 NSNotFound를 리턴한다.

- NSMutableArray는 NSArray를 상속받았지만 객체를 삽입하고 삭제할 수 있도록 확장되었다.

- 자주 사용되는 메소드

             - (void)addObject:(id)anObject -> anObject를 리시버의 끝에 삽입한다. nil배열은 넣을 수 없다.

 - (void)addObjectsFromArray:(NSArray *)otherArray ->

 - (void)insertObject:(id)anObject atIndex:(unsigned)index ->

             - (void)removeAllObjects -> 리시버에 포함된 모든객체를 제거한다.
             - (void)removeObject:(id)anObject -> 리시버 배열 안의 anObject를 삭제한다.
             - (void)removeObjectAtIndex;(unsigned)index -> index의 객체를 제거한다.

신고
- NSObject는 Objective-C클래스 개층의 최상위 클래스

- 자주 사용되는 메서드

- (id)init : 메모리가 할당된 리시버를 초기화 한다.
   ex)TheClass *newObject = [[TheClass alloc]init];

- (NSString *)description : 리시버를 설명하는 NSString을 리턴한다.

- (BOOL)isEqual:(id)anObject : 리시버와 anObject가 같다면 YES 틀리면 NO를 리턴한다.
  ex) if([myObject isEqual:anotherObject])
            NSLog(@"They are equal.");
신고

메시지

메시지는 대괄호를 사용하여 표현한다.
[receiver message]

수신자는 다음 중 하나이다
.
-
변수 또는 객체를 계산한 표현(self변수 포함
)
-
클래스명(클래스 객체를 나타냄
)
- super(
메소드 구현에 대한 대안적인 검색을 나타냄
)
메시지는 메소드 이름과 그 메소드에 전달되는 인수들을 나열한 것이다.

 

기정의된 유형

Objective-C에서 사용하는 주요 유형은 헤더 파일 objc/objc.h:에 정의되어 있다.

 

유형

정의

Id

객체(데이터 구조 포인터)

Class

클래스 객체(클래스 데이터 구조 포인터)

SEL

메소드명을 식별하는 컴파일러 할당 코드, 셀렉터

IMP

Id를 돌려보내는 메소드 구현 포인터

BOOL

Boolean, YES 또는 NO

신고