2011-04-27 2 views

답변

8

정복 된 주된 문제는 언어를 작동시키는 것입니다. ObjC 런타임 라이브러리가 없으면 ObjC 프로그램이 작동하지 않을 수 있습니다.

ObjC 런타임 라이브러리는 객체에 메시지를 보내고, 클래스에서 메소드 구현을 찾고, 클래스 데이터를 가져 오는 등의 작업을 구현합니다.이 모든 작업은 컴파일 할 때 수행 할 수 없으므로 런타임 지원이 필요합니다. 런타임 지원에 대한 필요성은 ObjC 런타임 라이브러리를 탄생 시켰습니다.

Objective-C와 관련이 있다면 런타임 라이브러리가 그 뒤에 있다고 할 수 있습니다.

the documentation로서 미국,

이 공유 라이브러리는 오브젝티브 C 언어의 동적 특성을 지원 를 제공하며, 그러한 모든 목적-C 애플리케이션에 링크 이다.

이 참조는 낮은 수준의 디버깅을 위해 Objective-C와 다른 언어 사이에서 브리지 계층을 개발하는 데 주로 유용합니다.

기능 목록을 확인해보십시오. objc_msgSend과 같은 일부 사용자는 잘못 받아 들일 수있는 행동을 구현합니다. 예를 들어, 호출 :

objc_msgSend(foo, sel_getUid("bar:"), 4); 

또는이 라인을 따라 뭔가 :

실제로
[foo bar:4]; 

는 다음과 같이 컴파일됩니다.

4

지니 크의 대답은 스포트 온입니다. 런타임을 명시 적으로 호출하여 수행 할 수있는 작업에 대해 궁금한 점이 있다면 프로그램이 실행되는 동안 반영 (finding information about classes), 기존 클래스 수정, changing method implementations 등이 있습니다.

+0

저는 속성 목록을 얻는 방법을 살펴 보았습니다. 그 코드를 가져 주셔서 감사합니다! –

+0

당신이 유용하다고 생각해서 다행입니다. 제가 링크 된 코드는 약간의 hackish입니다, 왜냐하면 저는 몇몇 특별한 경우에만 관심이 있었고 아마도 나머지 많은 것들을 잘못 잡았을 것입니다. 런타임에 관심이 있으시면 Mike Ash의 [MAObjCRuntime] (https://github.com/mikeash/MAObjCRuntime)을 제안 해주십시오. – zoul

+0

위대한, 고마워, 나는 그것도 들여다 볼 것이다. –

관련 문제