최근 편집
최근 토론
게시판 메인
도구
투표
무작위 문서
스킨 설정
파일 올리기
기타 도구
216.73.216.27
IP
사용자 도구
사용자 설정
로그인
회원 가입
최근 편집
최근 토론
돌아가기
Objective-C
(원본) (3)
[[분류:가져온 문서/오메가]] [[외부:https://pbs.twimg.com/media/FvdL8CCXoAICWZQ.jpg|width=300]] 프로그래밍 언어의 일종. [[C언어]]를 기반으로 smaltalk 형태의 객체지향 기능을 갖춘 언어이다. NeXT, Mac OS X의 OS에 표준 제공되는 공식 개발 언어이다. 현재는 주로 애플의 Mac OS X와 iOS에서 작동하는 응용 프로그램 개발에 이용된다. == 개요 == Objective-C는 C로 작성된 개체 지향 시스템을 제어할 수 있도록 매크로적 확장을 한 언어이다. 메서드(함수)의 파라미터에 라벨을 붙일 수 있는 장점이 있다. C나 C++는 함수를 호출하는 부분에 파라미터만 나열하므로 파라미터의 의미 파악이 어렵다. 그러나 Objective-C는 처음 보는 코드라도 라벨을 참조하면 무엇이 파라미터로 지정되었는지 의미 파악이 용이하다. Objective-C에서의 프로그래밍은 Objective-C를 지원하는 컴파일러로 컴파일하고 프로그램을 빌드해서 실행하는 순서로 진행된다. 이러한 컴파일러는 Mac OS X에서는 Xcode를 설치하면 해결된다. Mac OS X 외의 환경에서는 GNUstep을 사용할 수 있다. == 클래스 == 크게 4가지의 특징이 있다. * 다중상속 불가 * 대부분의 클래스는 'NSObject' 클래스를 상속 * 동적 타입 설정 * 메서드명과 인스턴스 변수명은 중복 가능 C++와 달리 Objective-C는 클래스 다중상속이 불가능하다. 하지만 '프로토콜'을 이용해 다른 형태의 인터페이스 정의가 가능하다. NSObject 클래스는 Objective-C에서 중요하게 다뤄지는 기본 클래스이다. === 호환성 === C언어 함수에서 Objective-C 메서드를 호출할 수 있으며 그 역도 가능하다. 이외에도 구조체와 타입 정의에 쓰이는 'typedef' 명령도 사용 가능하다. C++ 클래스도 사용 가능하지만, 클래스 계층을 혼합하는 것은 불가능하다. C++클래스를 상속한 Objective-C 클래스를 구현하거나 반대로 Objective-C 클래스를 상속한 C++ 클래스는 구현할 수 없다. 또한 C++의 가상함수 지원이 되지 않는다. == 코드 == === 클래스 정의 === {{{#!syntax C @interface classobject : NSObject { /*클래스 변수*/ int val; id obj; } + (void)classMethod:(id)arg; // 클래스 메서드 - (id)method:( NSObject*)arg1 with:(int)arg2; // 인스턴트 메서드. arg1은 유형이 지정됨 @end }}} == 영상 == [youtube(-KsnpU--88I)] [Include(틀:가져옴2,O=오메가, C=[[https://creativecommons.org/licenses/by-nc-sa/3.0/deed.ko|CC BY-NC-SA 3.0]])]