2010-02-19 3 views
6

코코아가 Objective-C의 주요 플랫폼 인 것으로 보입니다. GCC (Xcode에서 사용)는 Objective-C를 지원하므로 다양한 플랫폼에서 사용할 수 있어야합니다.Objective-C는 코코아없이 사용됩니까?

Objective-C를 사용하지만 Cocoa (또는 오픈 소스 사촌 GNUStep)를 사용하지 않는 주목할만한 크로스 플랫폼 프로젝트가 있습니까? 애플 생태계 밖에서 실제로 사용됩니까?

+0

나는 당신의 말로는 분명히 말할 수 없지만, 명확성을 위해서 GNUStep은 크로스 플랫폼이라는 것을 알고 있습니까? "GNUstep은 현재 http://www.gnustep.org/에서 인용 한 Unix (GNU/Linux 및 GNU/HURD, Solaris, NetBSD, OpenBSD, FreeBSD, Darwin) 및 Windows를 인용합니다. –

+0

예, 이해했습니다. 나는 분명히 할 것이다. Obj-C가 Cocoa 나 GNUStep 같은 라이브러리/프레임 워크와 만 상호 작용하기보다는 범용 언어 (예 : C 또는 C++와 같은 종류의 컨텍스트)로 사용되는지 여부를 묻습니다. – Joe

답변

11

Objective-C 역시 과학 및 금융 서비스 커뮤니티에서 널리 사용되었습니다. 대다수의 Objective-C 기반 응용 프로그램이 은행 업무에 배치되어 있으며, 주로 거래 분석에 사용됩니다. 친구는 거의 백만 줄의 Objective-C 기반 분석 및 거래 엔진을 사용하여 자신 만의 클래스 계층 구조를 처음부터 작성했습니다.

한순간에 인기있는 Linux 창 관리자 중 한 명이 Objective-C로 작성되었습니다. 그것은 몇 년 전이었고 더 이상 그렇지 않을 수도 있습니다.

LLVM compiler도 블록을 완전히 지원하는 것을 포함하여 Objective-C를 컴파일합니다. 그것은 또한 아주 휴대 가능합니다.

David Stes의 Portable Object Compiler도 있습니다. Objective-C를 C로 컴파일하고 StepStone의 원래 ICPak 클래스 계층 구조에 직접적으로 기반한 클래스 계층 구조를 사용합니다.

0

네, 물론 있습니다. 내 머리 꼭대기에서 생각할 수있는 것은 코코 트론입니다. Windows에 AppKit을 이식하려는 노력. 그 외에

http://www.cocotron.org/

은, 오브젝티브 C는 GCC가 실행됩니다 모든 플랫폼에서 사용할 수 있습니다. 앞서 언급했듯이 GNUStep은 꽤 좋은 노력을하지만, OS X 또는 iPhone의 코코아에서 사용할 수있는 풍부한 프레임 워크를 보유하지는 못합니다.

+0

고마워, 그거 재미있어! 그래도 Apple API 중심입니다 ... – Joe

+0

GNUStep (wmaker 창 관리자와 자체 그래픽 응용 프로그램 작성기 포함)은 Apple API 중심이지만, Cocoa가 기반으로하는 NeXTStep objectiveC에서 파생되었습니다. –

+0

스티브가 1985 년에 애플의 정신을 그에게 가져 갔다고 믿는가에 달려있다. :) 나는 넥스트와 후계자 (애플을 포함해서)를 의미했다. – Joe

4

Objective-C가 코코아, GNUstep 또는 Cocotron 또는 과 같은 API가없는 경우에 사용하는 것이 좋습니다.

대답은 기본적으로 없습니다. Cocoa (또는 GNUstep 등)와 같은 API가 없으면 Objective-C는별로 유용하지 않습니다. 예를 들어 NSObject가 없으면 retainrelease은 존재하지 않습니다. 이러한 API에는 매우 중요한 기능이 많이 내장되어 있으므로 Obj-C를 사용하지 않으면 아무런 의미가 없습니다.

+0

확인. 그게 내가 찾고 있던 대답이야! 고맙습니다. 매우 중요한 'NSObject'가 API가 아닌 언어로 정의되어 있다는 사실을 잊어 버렸습니다 ('NS'가 그것을 버릴 것이라고 생각했을 것입니다 ...).) FYI Obj-C와 함께 곧바로 C 프로젝트를 정리할 생각 이었기 때문에 내가 묻고 있었던 이유는 그 질문에 나를 이끌었다. – Joe

+2

Objective-C 런타임 (Mac OS X과 GNU 런타임에서 오래된 것)은'NSObject'와 공통된 많은 메소드를 가진'Object'라는 객체를 정의합니다. 그것은 release/retain을 포함하고 있지 않지만 Cocoa와는 독립적 인 독자적인 프레임 워크를 시작하기에 충분합니다. – dreamlax

관련 문제