Objective-C 콜렉션


  1. 콜렉션이란? 다수의 데이터를 다루는 용도로 사용되는 클래스를 의미한다.
  2. 콜렉션 클래스는 id 타입의 객체만 저장 가능하며 원시 타입이나 구조체는 래퍼 클래스를 사용한다.
  3. 주로 사용되는 콜렉션 클래스는 NSArray, NSDictionary, NSSet이 있다.
    1. NSArray : 인덱스 기반으로 동작하는 콜렉션으로 인덱스와 매칭하여 여러 개의 객체를 저장
      1. NSArray 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
      2. NSArray 클래스의 가변형은 NSMutableArray 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
      3. 아래 그림은 NSArray 클래스가 저장하는 형태를 나타낸 것이다.
      4. NSArray 객체 생성 방법
        1. 단일 객체 생성
          1. 팩토리 메소드 : +(instacetype)arrayWithObject:(id)anObject;
          2. 첨자표기 : @[(id)anObject];
        2. 다수 객체 생성 시 마지막에는 nil 로 종료한다.(첨자표기는 nil로 종료하지 않음)
          1. 인스턴스 메소드 : -(instancetype)initWithObjects:(id)firstObject, (id)secondObject, ... , nil;
          2. 팩토리 메소드 : +(instancetype)arrayWithObjects:(id)firstObject, (id)secondObject, ..., nil;
          3. 첨자표기 : [(id)firstObject, (id)secondObject, ...];
        3. 배열 사용 시 주의할 사항은 배열의 인덱스가 범위를 벗어나지 않도록 주의한다.
    2. NSDictionary : 키-값 기반으로 동작하는 콜렉션으로 키와 매칭하여 여러 개의 객체를 저장한다.
      1. NSDictionary 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
      2. NSDictionary 클래스의 가변형은 NSMutableDictionary 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
      3. 아래 그림은 NSDictionary 클래스가 저장하는 형태를 나타낸 것이다.
      4. NSDictionary 객체 생성 방법
        1. NSDictionary 객체 생성 시에 nil로 종료한다.
          1. 인스턴스 메소드 : -(instancetype)initWithObjectsandKeys:(id)firstObject, (id)secondObject, ..., nil;
          2. 팩토리 메소드 : +(instancetype)dictionaryWithObjectAndKeys:(id)firstObject, (id)secondObject, ..., nil;
          3. 리터럴 : @{@"key1" : @"value1", @"key2" : @"value2", ..};
    3. NSSet : 인덱트 기반으로 동작하는 콜렉션으로 인덱스와 매칭하여 여러개의 객체를 저장하나 저장된 객체는 모두 유일하며 중복되는 객체는 없도록 구성된 콜렉션 클래스이다.
      1. NSSet 클래스는 불가변형으로 할당된 상태에서 값을 저장하면 변경할 수 없다.
      2. NSSet 클래스의 가변형은 NSMutableSet 클래스로 할당된 상태에서 값을 저장하고 변경이 가능하다.
      3. NSSet 객체 생성 방법
        1. 인스턴스 메소드 : -(instancetype)initWithObjects:(id)firstObject, (id)secondObject, ...;
        2. 팩토리 메소드 :+(id)setWithObjects:(id)firstObject, (id)secondObject, ...;
    4. 콜렉션 순회 방법
      1. Array, Dictionary, Set에 저장된 객체들의 값을 이용하기 위해서 순회를 해야한다.
      2. 순회 방법
        1. for - 변수 사용은 아래 그림과 같이한다.
        2. Enumeration 방식은 아래 그림과 같이한다.
      3. 프로그램 작성 시에 콜렉션 클래스들과 반복문은 주로 같이 사용된다.