Objective-C 파운데이션 프레임워크


  1. 프레임워크(Framework)란? 어플리케이션에서 구현할 기능들을 하나의 묶음으로 작성한 것을 의미한다.
  2. 파운데이션 프레임워크는 iOS에서 사용할 기능들을 하나의 묶음으로 제공하게 된다.
    1. 호출 방법 : #import <Foundation/Foundation.h>
    2. 파운데이션 프레임워크는 클래스 이름 앞에 "NS"를 붙여서 사용한다.
      ex) String -> NSString, int -> NSSInteger
  3. 파운데이션 프레임워크에서 가장 상위 객체 : NSObject
    1. NSObject는 모든 클래스의 부모 클래스이다.
    2. NSObject 주요 기능
      1. 메모리 관리
        1. 객체를 메모리에 할당하고, 해제하여 메모리를 관리한다.
        2. alloc 함수로 객체를 메모리에 할당
        3. dealloc 함수로 객체를 메모리에 해제
      2. 객체 비교
        1. 비교 시에 타입에 주의를 한다.
          1. 원시 타입은 '==' 으로 값을 비교
          2. 포인터 타입은 '==' 로 주소 비교로 동일 객체 여부를 판단
          3. 위 코드의 경우 결과는 아래와 같이 나온다.
          4. 동일한 값이지만, 다른 문자열 객체로 나오게 되는데 포인터 타입의 경우 주소를 비교하기 때문이다.
        2. 포인터 타입의 값을 비교는 NSObject 클래스 내에 isEqual 함수를 이용
      3. 객체의 상황을 설명
        1. 객체가 어떻게 구성되어 있는지에 대한 설명을 하는 함수인 description 이용
        2. NSString 클래스의 descretion 메소드에 대한 결과는 아래와 같다.
  4. 파운데이션 프레임워크에서의 데이터 종류
    1. 불가변형(immutable) 클래스 : 객체 생성 이후 내용 변경을 할 수 없음
      1. 불가변형 클래스 예시) NSString, NSArray, NSDictionary ...
      2. 불가변형은 한 번 입력된 값을 변경할 수 없기 때문에 그 이상의 공간을 차지 하지 않아 성능상 유리
      3. 불가변형 클래스를 이용하여 문자를 지우고 붙이는 코드는 아래와 같다.
      4. 위 코드를 실행하게 되면 아래와 같다.
    2. 가변형(Mutable) 클래스 : 객체 생성 이후 내용 변경을 할 수 있음
      1. 가변형 클래스 예시) NSMutableString, NSMutableArray, NSMutableDictionary ...
      2. 가변형 클래스는 버퍼(buffer)를 이용해서 데이터를 저장
      3. 가변형 클래스가 불가변형 클래스를 상속한다.
        => 클래스 선언 : @interface NSMutableArray : NSArray
      4. 가변형 클래스를 이용하여 문자를 지우고 붙이는 코드는 아래와 같다.
      5. 위 코드를 실행하게 되면 아래와 같다.