2009-05-12 4 views
8

Mac 또는 iPhone이 없습니다. 그러나 C를 사용하고 스몰 토크 (smalltalk), 파이썬 (python) 또는 루비 (ruby)에 대한 아이디어를보다 역동적으로 만드는 개념은 정말로 매력적입니다. 객관적인 C에서 시작하고 싶습니다.Mac없이 학습 목표

객관적인 C는 단지 C의 구문 수퍼 집합입니까, 아니면 C와 같은 실제는입니다. gcc 등으로 컴파일 할 수 있습니까?

저는 루비에서 프로그래밍을 주로합니다. Objective C는 C보다 훨씬 관대 해 보입니다. C에서 Ruby의 네이티브 확장을 쓸 수 있습니다. Objective C에서 Ruby의 네이티브 확장을 쓸 수 있습니까?

Mac/iPhone을 소유하고 Xcode를 보유하고 있지 않다면 어떻게 Objective C를 시작할 수 있습니까?

+3

는 왜 루비 태그가? – MickaelFM

+0

객관적인 관점에서 작성된 루비 확장에 대한 계획에 성공 했습니까? 나는 objective-c에서도 루비 확장을 개발했다. 이제 새로운 objective-c 예외 (@ throw/@ catch ...)에 문제가 있습니다. 내가 루비 애플 리케이션 코어 덤프를 사용하면 예외가 처음 발생합니다. gnu-runtime을 사용 중이고 코어 덤핑 코드가 안에 있습니다 : objc_exception_throw (...) { ... /* 어떤 종류의 풀기 오류. */ abort(); } –

답변

6

Wikipedia는 애플의 맥 OS X와 ​​아이폰 OS에 주로 사용되는

오늘, 두 환경, 오픈 스텝 표준으로하지만 호환되지 , 기반, 하고 기본 언어 말한다 NeXT의 NeXTSTEP OS에서 원래 이라는 주 언어로 사용 된 이지만 Apple의 Cocoa API에 을 사용했습니다. 일반 이러한 라이브러리를 라이브러리로 사용하지 않는 Objective-C 프로그램은 gcc가 지원되는 모든 시스템 용으로 컴파일되어 Objective-C 컴파일러가 포함될 수도 있습니다.

오늘날 종종 코코아 또는 그누 스텝 같은 표준 객체 (자주 "키트"또는 "골격"이라고도 함), 고정 라이브러리 병행 사용 목적-C.

주로 Windows를 실행하고 GNUStep을 실행하는 경우 Linux vm을 가져야합니다.

1

아래 링크를 확인하시기 바랍니다, 그리고 애플이 그 위에 구축 한 프레임 워크. 이러한 프레임 워크는 코드에서 사용할 수있는 많은 객체로 구성되어 있으며 Mac 또는 iPhone을 대상으로하는 경우 특히 유용합니다. GNUStep에는 그 일부가 비슷한 객체가 있지만, Cocoa/etc 라이브러리를 완전히 대신 할 수는 없으며 특히 iPhone과 관련된 모든 것을 다루지 않습니다.

GNUStep과 Objective-C 언어 (gcc를 통해)는 많은 플랫폼에서 사용할 수 있으며 Objective-C 객체를 사용하고 Objective-C의 모든 C API와 상호 작용하는 프로그램을 작성할 수 있습니다.

Objective-C는 C의 상위 집합이므로 C보다 훨씬 관대하지 않지만 아마도 C++ (거의 C의 수퍼 집합)보다 더 관대합니다. Objective-C와 C++을 GCC와 혼합 할 수도 있지만, 특히 예외 처리와 관련하여 다소 복잡해집니다.

GNUStep과 GCC를 시작하기에 좋은 방법이 될 것입니다.

+0

Objective-C는 C의 엄격한 수퍼 세트입니다. C++과는 달리 C에서 약간의 깔끔한 틈이 있습니다. –

+0

Objective-C는 거의 모든 수퍼 세트가 아닌 C의 완전한 수퍼 집합입니다. –

+0

오케이, 죄송합니다. (Obj-C보다 C++에 익숙합니다.) 어쨌든 실용적인 관점에서 본문을 바로 잡을 것입니다. 둘 다 C의 수퍼 세트입니다. –

3

사과가 gcc로 다시 변경되었습니다 (많은 선택권이있는 것은 아니며 GPL 임). 따라서 gcc를 설정할 수있는 곳이면 어디서든 objective-c 컴파일러를 설정할 수 있습니다.

그 이상의 환경에서는 Gnustep 환경을 사용하면 원래 OpenStep/NextStep 환경의 맛을 약간만 얻을 수 있습니다.

0

많은 도움이되지 않는다는 점을 제외하고는 네이티브 루비 확장에 Objective C를 사용할 수없는 이유가 없습니다. 내가 아는 한 객관적인 -c 바인딩에 대한 루비가 없으므로 더 낮은 수준의 C API 호출을 사용해야 할 것이다. 또한 Objective C에는 도움이되는 반면 루비 확장의 맥락에서 크기와 무게를 쉽게 정당화하지 못하는 유틸리티 클래스 라이브러리가 제공됩니다.

+1

유틸리티 클래스의 실질적인 라이브러리는 무엇입니까? Objective-C는 실질적으로 아무것도 제공하지 않습니다. – Chuck