(+)분류 : 가져온 문서/오메가

프로그래밍 언어의 일종. C언어를 기반으로 smaltalk 형태의 객체지향 기능을 갖춘 언어이다. NeXT, Mac OS X의 OS에 표준 제공되는 공식 개발 언어이다. 현재는 주로 애플의 Mac OS X와 iOS에서 작동하는 응용 프로그램 개발에 이용된다.
1. 개요 ✎ ⊖
Objective-C는 C로 작성된 개체 지향 시스템을 제어할 수 있도록 매크로적 확장을 한 언어이다.
메서드(함수)의 파라미터에 라벨을 붙일 수 있는 장점이 있다. C나 C++는 함수를 호출하는 부분에 파라미터만 나열하므로 파라미터의 의미 파악이 어렵다. 그러나 Objective-C는 처음 보는 코드라도 라벨을 참조하면 무엇이 파라미터로 지정되었는지 의미 파악이 용이하다.
Objective-C에서의 프로그래밍은 Objective-C를 지원하는 컴파일러로 컴파일하고 프로그램을 빌드해서 실행하는 순서로 진행된다. 이러한 컴파일러는 Mac OS X에서는 Xcode를 설치하면 해결된다. Mac OS X 외의 환경에서는 GNUstep을 사용할 수 있다.
메서드(함수)의 파라미터에 라벨을 붙일 수 있는 장점이 있다. C나 C++는 함수를 호출하는 부분에 파라미터만 나열하므로 파라미터의 의미 파악이 어렵다. 그러나 Objective-C는 처음 보는 코드라도 라벨을 참조하면 무엇이 파라미터로 지정되었는지 의미 파악이 용이하다.
Objective-C에서의 프로그래밍은 Objective-C를 지원하는 컴파일러로 컴파일하고 프로그램을 빌드해서 실행하는 순서로 진행된다. 이러한 컴파일러는 Mac OS X에서는 Xcode를 설치하면 해결된다. Mac OS X 외의 환경에서는 GNUstep을 사용할 수 있다.
2. 클래스 ✎ ⊖
크게 4가지의 특징이 있다.
C++와 달리 Objective-C는 클래스 다중상속이 불가능하다. 하지만 '프로토콜'을 이용해 다른 형태의 인터페이스 정의가 가능하다. NSObject 클래스는 Objective-C에서 중요하게 다뤄지는 기본 클래스이다.
- 다중상속 불가
- 대부분의 클래스는 'NSObject' 클래스를 상속
- 동적 타입 설정
- 메서드명과 인스턴스 변수명은 중복 가능
C++와 달리 Objective-C는 클래스 다중상속이 불가능하다. 하지만 '프로토콜'을 이용해 다른 형태의 인터페이스 정의가 가능하다. NSObject 클래스는 Objective-C에서 중요하게 다뤄지는 기본 클래스이다.
2.1. 호환성 ✎ ⊖
C언어 함수에서 Objective-C 메서드를 호출할 수 있으며 그 역도 가능하다. 이외에도 구조체와 타입 정의에 쓰이는 'typedef' 명령도 사용 가능하다. C++ 클래스도 사용 가능하지만, 클래스 계층을 혼합하는 것은 불가능하다. C++클래스를 상속한 Objective-C 클래스를 구현하거나 반대로 Objective-C 클래스를 상속한 C++ 클래스는 구현할 수 없다. 또한 C++의 가상함수 지원이 되지 않는다.
3. 코드 ✎ ⊖
3.1. 클래스 정의 ✎ ⊖
@interface classobject : NSObject
{
/*클래스 변수*/
int val;
id obj;
}
+ (void)classMethod:(id)arg; // 클래스 메서드
- (id)method:( NSObject*)arg1 with:(int)arg2; // 인스턴트 메서드. arg1은 유형이 지정됨
@end