Effective OC 제1 4 조: '클래스 대상' 의 의 도 를 이해
typedef struct objc_object{
Class isa; //=>
} *id;
Class 자체 도 대상 입 니 다. 데이터 구조:
typedef struct objc_class *Class;
struct objc_class {
Class isa; // ( )
Class super_class; //
const char *name;
...
// ,
struct objc_ivar_list *ivars;
struct objc_method _list **methodLists;
struct objc_cache *cache;
struct objc_protocol_list *protocols;
}
메타 데이터
각 클래스 는 하나의 클래스 대상 만 있 고, 클래스 대상 은 하나의 예 이다.
super_class 지침 은 계승 관 계 를 확정 하 였 으 며, isa 지침 은 인 스 턴 스 가 속 한 클래스 가 이러한 관 계 를 통 해 [유형 정보 조회] 를 실행 할 수 있 습 니 다. 대상 이 특정한 선택 자 에 응답 할 수 있 는 지, 특정한 협 의 를 따 를 수 있 는 지 확인 할 수 있 습 니 다.
클래스 계승 체 에서 유형 정 보 를 조회 합 니 다.
유형 정보 조회 방법 으로 클래스 계승 체 계 를 검사 합 니 다.
두 종류의 대상 이 같 는 지 비교 하 다
클래스 대상 이 하나의 예 이기 때문에 전체 응용 프로그램 에서 각 클래스 의 대상 은 하나 밖 에 없습니다. 대상 이 특정한 인 스 턴 스 인지 판단 합 니 다.
id object = ...;
if ([object class] == [EocSomeClass class]){
}
이렇게 판단 한 후에 도 메 시 지 를 처리 하지 마 세 요. object 는 다른 대상 이 모든 선택 자 를 전달 한 수용 대상 일 수 있 기 때 문 입 니 다.
요점
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.