CLOSE SEARCH

[Objective-C] Class 2

– 클래스 객체

C++의 경우 클래스를 하나의 객체로 보기보다는 인스턴스를 생성하기 위한 템플릿으로 보지만, Objective-C 에서는 클래스 역시 하나의 객체로 본다. 그러므로 클래스 객체는 자신의 클래스 멤버와 메소드를 가진다. 클래스 객체를 팩토리, 클래스의 메소드를 팩토리 메소드라고 부르기도 한다. 클래스 자신도 하나의 객체이므로 언젠가는 반드시 생성되어야 하는데, 클래스의 인스턴스의 경우 클래스의 생성 메소드를 통해서 생성하지만 클래스 객체 자신은 프로그램 시작시 자동으로 생성된다. 즉, Objective-C 에서는 프로그램 시작시에 각 클래스에 해당되는 클래스 객체를 하나씩 생성한다.

 

– 클래스 객체의 종류

모든 클래스 객체는 Class 타입의 객체이다. 또한 모든 객체를 id 값으로 표현할 수 있는것처럼, 클래스 객체 역시 id 값으로 표현할 수 있다. 
특정 클래스의 클래스 객체를 얻기 위해서는 아래와 같은 코드를 사용한다.

클래스의 종류를 판별하기 위해서는 아래와 같은 코드를 사용한다.

 

– 클래스 메소드

인스턴스 메소드는 정의나 구현 앞에 ‘ – ‘ 문자를 두지만, 클래스 메소드는 ‘+’ 문자를 둔다.

하나의 클래스에 시그니쳐가 서로 동일한 메소드가 하나 이상 존재할 수 없지만, 시그니쳐가 동일한 클래스 메소드와 인스턴스 메소드는 하나의 클래스에 함께 존재할 수 있다. 클래스 메소드 내부에서는 인스턴수 변수에 접근하거나 인스턴스 메소드를 호출 할 수 없다.

Filed under: iOS, Programming Languages