iOS의 Cocoa는 NSObject를 상속받는 모든 클래스를 가리키는 단어이다.
따라서 CocoaTouch프레임워크란 iOS환경을 구축하기위한 최상위 프레임워크이며 일반적으로 옵씨에서의 NSObject와 스위프트에서 사용되는 UIKit, Foundation 등에 포함되는 대부분의 클래스가 여기에서 속한다.
NSObject는 Objective-C 및 Swift 프로그래밍 언어의 기본 클래스이며 해당 언어에서 대부분의 다른 클래스의 루트 클래스 역할을 한다. UIButton은 UIControl을 상속하고, UIView는 UIResponder, UIResponder는 NSObject를 상속한다.
NSObject는 어플리케이션의대부분의 객체에 필요한 기본 동작을 정의하는 클래스이다.
객체를 생성, 복사, 비교 및 메모리에서 해제하는 메서드를 제공한다.
NSObject 클래스는 네가지 필수 기능을 제공한다.
1. 객체 초기화: NSObject클래스는 다른 모든 클래스에서 상속되는 기본 초기화 메서드인 init을 제공한다. 이 메서드는 클래스의 인스턴스가 생성될 때 호출되며 인스턴스의 변수를 기본값으로 초기화한다.
UIView()와같이 기본 초기화 메서드가 NSObject의 메서드라고 한다.
2. 메모리 관리: NSObject클래스는 객체에 할당된 메모리 관리를 하는 메서드를 제공한다 객체가 더이상 필요하지 않으면 할당된 메모리를 해제하기위해 해제 메서드가 호출된다.
3. 객체 비교: NSObject클래스는 두 객체를 비교하는 메서드를 제공한다. isEqual메서드는 두 객체의 내용을 비교하고 isKindOfClass메서드는 객체가 특정 클래스의 인스턴스인지 확인한다.
4. 객체 복사: NSObject클래스는 객체의 복사본을 만드는 메서드를 제공한다. copy메서드는 객체의 얕은 복사본은 생성하는 반면 mutableCopy메서드는 객체의 변경 가능한 복사본을 생성한다.
UIControl의 하위클래스인 UIButton은 UIView를 상속받고, UIResponder를 상속받으며 궁극적으로 NSObject를 상속받는다 이 상속계층을 통해 UIButton은 객체 초기화, 메모리관리 및 객체 비교와 같은 기능을 NSObject를 통해 활용할 수 있다.