콘텐츠로 건너뛰기
Home » Function Pointer

Function Pointer

[Objective-C] 메시지로부터 메소드가 호출되는 과정

objc_msgSend 함수와 메시징 매커니즘

objective-c에서는 객체의 메소드를 호출하는 것을 객체에게 메시지를 보낸다라고 표현한다. 이는 메소드 자체를 객체화하는 디자인 패턴과 쉽게 익숙해질 수 있게 하려는 포석이기보다는 실제로 메소드의 호출이 메시지를 보내는 형태로 구현이 되어있기 때문이다. objective-c의 이러한 메시징 매커니즘을 이해하려면 몇 가지 깊숙한 곳의 내용을 찬찬히 들여다 볼 필요가 있다.

더 보기 »[Objective-C] 메시지로부터 메소드가 호출되는 과정

(C/Objc) 함수 포인터와 코드 블럭

C언어에서 어떤 타입의 배열과 포인터는 다른 것이지만, 흔히들 혼용해서 사용하기도 한다. 이것은 배열의 이름 그자체가 배열의 시작번지를 나타내는 값으로 작동하기 때문이다. 그런데 함수에 대해서도 이와 비슷한 규칙이 성립한다. 프로그램이 실행되는 동안, 프로그램 내의 모든 실행코드들은 메모리에 올라와 있다. 이 말은 즉, 함수가 실행되기 위해서는 해당 함수의 실행코드가 메모리 상에 로드되어 있다는 말이고, 함수의 시작번지를 프로그램은 어떤식으로든 알고 있다는 것이다. 배열의 예와 마찬가지로 함수의 이름은 함수의 실행코드가 로드되어 있는 메모리 주소를 가리킨다. 그렇다면 임의의 T타입 배열의 이름을 T타입 포인터에 대입해서 그… 더 보기 »(C/Objc) 함수 포인터와 코드 블럭