2011-02-05 3 views
0

Objective-C 코드를 C로 컴파일하는 방법이 있습니까? 나는 다양한 것들이 얼마나 인지 알기를 원할 것입니다.은 두려운면으로 표현되었지만, 나는 Assembly를 다루는데 불편합니다.Objective-C 코드를 C로 컴파일

예를 들어, I는 방법의 클래스 및 메소드의 이름에 기초하여 고유 한 이름의 함수로 표현 된 책을 읽고, 상기 id 형태는 단일 부재 (isa)와 구조체를 정의된다. 이것을 볼 수 있습니까?

+0

그러나 목표 - C 코드 *, * C 코드가 아닌가요? – BoltClock

+0

아닙니다. 그것은 C.의 수퍼 세트입니다 –

+0

@ 볼트 아니, 그렇지 않습니다. C 코드는 Objective-C 코드입니다. – ClosureCowboy

답변

4

어딘가에 Objective-C가 C를 통해 전처리기로 구현되었지만 더 이상 그렇지 않습니다. C에서 런타임에 액세스 할 수있는 반면 Objective-C 코드에서 현대 컴파일러로 C 코드를 생성하는 방법은 없다고 생각합니다. (너무 추악하지 않으면 기술적으로 가능할 수도 있지만)

그러나 과거에는 몇 가지 유물이 있습니다. id을 마우스 오른쪽 버튼으로 클릭하고 을 선택하면 정의으로 이동하면 typedef가 표시됩니다. 코드를 디버그하여 객체의 구조를 살펴보면 첫 번째 필드는 항상 수퍼 클래스의 구조이고 항상 isa까지가는 것을 볼 수 있습니다. 그리고 애플 provides documentation on the runtime은 어떻게 작동하는지 통찰력을 줄 수 있습니다.

1

최적화없이 컴파일하고 적합한 C 디 컴파일러를 찾으면 부분적으로 유용한 결과를 얻을 수 있습니다.

Objective C 언어의 거의 모든 부분이 숨겨진 구조 요소를 사용하는 Objective C 런타임에 대한 호출로 C 코드로 표현 될 수 있습니다.

(이전 버전의 언어에 대한 초기 매크로 처리기 구현 중 하나가 여전히 존재하고 사용할 수 있는지 아는 사람 있나요?)