Objective C에서 모든 객체는 그 클래스가 속한 클래스를 알려주는 isa 포인터로 저장된 첫 번째 4 바이트 [프로세서 유형에 따라 다름]과 셀렉터를 해결하기 위해 사용할 디스패치 테이블이 기능.데이터 멤버는 개체에 어떻게 저장됩니까?
내가 알고 싶었던 것은 데이터 멤버가 이러한 메서드에서 저장되고 액세스되는 방식이었습니다. self는 호출되는 각 함수에서 암시 적 객체로 전달됩니다.
우리는 좋은 연습으로
을 다른 멤버 함수의 데이터 멤버를 처리하는 세터 N 게터를 사용하지만 우리가 직접 초기화 또는 accesor에 데이터 멤버를 참조 할 때, 방법은 그들이 액세스 할 수 있습니다. 컴파일시에 다른 주소로 바뀌 었습니까?
분명히 Objective-C 런타임 (또는 그 일부/버전)은 오픈 소스입니다. ivars를 가져오고 설정하기위한 런타임 API가 여기 구현 된 방법을보실 수 있습니다 : http://www.opensource.apple.com/source/objc4/objc4-493.9/runtime/objc-class.m – millimoose