Runtime(3) 하나의 클래스에 대한 모든 내용 가져오기
우선 헤더 파일을 가져오는 것을 잊지 말고 다음과 같이 하세요~~~
1. ViewController에서 대상을 통해 클래스 이름을 가져옵니다
//
const char *name = class_getName(per.class);
2. 속성 리스트 획득
unsigned int count = 0;
//
objc_property_t *pro = class_copyPropertyList(per.class, &count);
//
for (unsigned int i = 0; i < count; i++) {
const char *objcName = property_getName(pro[i]);
NSLog(@" %d %s",i,objcName);
// C OC
//NSString *key = [NSString stringWithUTF8String:name];
}
//
free(pro);
3. 구성원 변수 목록 가져오기(보다 전면적)
unsigned int _count;
// Ivar:
// &
Ivar * ivars = class_copyIvarList(per.class,&_count);
for (int i = 0 ; i<_count i="">C
const char * name = ivar_getName(ivars[i]);
// OC
//NSString *key = [NSString stringWithUTF8String:name];
NSLog(@" %s",name);
//
const char *namerType = ivar_getTypeEncoding(ivars[i]);
//
object_setIvar(per, ivars[0], @" ");
}
//
free(ivars);
4. 하나의 종류를 얻는 모든 방법
unsigned int countMethod;
//
Method * methods = class_copyMethodList(per.class, &countMethod);
for (int i = 0 ; i < countMethod; i++) {
//
Method method = methods[i];
//
SEL methodSEL = method_getName(method);
// C
const char *name = sel_getName(methodSEL);
NSLog(@" %s",name);
// C OC
NSString *methodName = [NSString stringWithUTF8String:name];
//
int arguments = method_getNumberOfArguments(method);
NSLog(@"%d == %@ %d",i,methodName,arguments);
}
//
free(methods);
5. 하나의 클래스가 따르는 모든 협의를 얻는다.
unsigned int count;
//
__unsafe_unretained Protocol **protocols = class_copyProtocolList([self class], &count);
for (int i = 0; i < count; i++) {
//
Protocol *protocol = protocols[i];
// C
const char *name = protocol_getName(protocol);
//C OC
NSString *protocolName = [NSString stringWithUTF8String:name];
NSLog(@"%d == %@",i,protocolName);
}
//
free(protocols);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.