NSObject isa
NSObject isa 에 대한 이해 가 좋 지 않 았 습 니 다. 큰 소 가 쓴 블 로 그 를 보고 많은 이 해 를 했 습 니 다. 여기 서 학습 성 과 를 기록 하여 나중에 보기 편 합 니 다.블 로그 주소http://xiongzenghuidegithub.github.io/blog/2016/05/17/runtime-part7-object-getclass-yu-object-class-de-qu-bie/
isa 지향: 대상 isa - > 클래스, 클래스 isa - > 원류, 원류 isa - > 뿌리 원류, 뿌리 원류 isa - > 뿌리 원류 자신, 회로 슈퍼 class: 대상 슈퍼 class 지향 대상 슈퍼 class.원류 슈퍼 클래스 는 슈퍼 클래스 부 류 를 가리킨다.루트 메타 루트 클래스 지향 클래스 NSObject
//
@interface NSObject {
Class isa OBJC_ISA_AVAILABILITY; //
}
//
struct objc_class {
Class isa OBJC_ISA_AVAILABILITY; //
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
} OBJC2_UNAVAILABLE;
//
struct objc_class {
Class isa OBJC_ISA_AVAILABILITY; // root
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
} OBJC2_UNAVAILABLE;
// root
struct objc_class {
Class isa OBJC_ISA_AVAILABILITY; //
#if !__OBJC2__
Class super_class OBJC2_UNAVAILABLE;
const char *name OBJC2_UNAVAILABLE;
long version OBJC2_UNAVAILABLE;
long info OBJC2_UNAVAILABLE;
long instance_size OBJC2_UNAVAILABLE;
struct objc_ivar_list *ivars OBJC2_UNAVAILABLE;
struct objc_method_list **methodLists OBJC2_UNAVAILABLE;
struct objc_cache *cache OBJC2_UNAVAILABLE;
struct objc_protocol_list *protocols OBJC2_UNAVAILABLE;
#endif
} OBJC2_UNAVAILABLE;
Person *person = [[Person alloc] init];
NSLog(@"person class:%p", [person class]); // objc_class
NSLog(@"person meta class:%p", object_getClass(person)); // objc_class
NSLog(@"person meta class:%p", [Person class]); // objc_class
NSLog(@"person meta class:%p", object_getClass([person class])); // objc_class
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.