iOS의runtime의 간단한 사용

runtime 메커니즘은 프로그램이 실행될 때 클래스, 대상의 모든 속성, 방법을 동적으로 수정할 수 있는 일련의 방법을 제공합니다.
다음은 운행할 때 흔히 볼 수 있는 사용 방식인 사전 회전 모형을 소개한다.물론, "나는 KVO로 직접 setValuesForKeysWithDictionary: 사전을 전송하는 것처럼 사전을 모델로 빠르게 돌릴 수 있다."라고 말할 수 있지만, 이러한 방법은 어떤 모델에 있는 모든 구성원 변수를 훑어보고 구성원 변수를 통해 사전에서 대응하는 값을 꺼내 값을 부여하는 폐단이 있다.
1. 내가 하나의 종류를 정의했다고 가정한다(아무렇게나 썼으니 이름을 따지지 마라.m 파일은 아무것도 쓰지 않았다).
@interface Lender : NSObject{
    CGFloat height;
}

@property (nonatomic, copy) NSString *name;
@property (nonatomic, strong) NSNumber *age;
@property (nonatomic, assign) int no;

@end

2. 다른 파일에서 이 종류를 사용합니다. 주의: 실행할 때 반드시 먼저 포함해야 합니다.
#import
다음은 이 클래스의 모든 구성원 변수를 코드를 통해 얻을 것입니다
unsigned int outCount = 0;
    Ivar *vars = class_copyIvarList([Lender class], &outCount); //  
    
    //  
    for (int i = 0; i < outCount; i++) {
        Ivar ivar = vars[i]; //  i 
        
        const char *propertyName = ivar_getName(ivar); //  
        const char *propertyType = ivar_getTypeEncoding(ivar); //  
        printf("---%s--%s
", propertyName, propertyType); }

인쇄 결과
---height--f
---_name--@"NSString"
---_age--@"NSNumber"
---_no--i

이 몇 마디의 간단한 코드를 통해 특정한 클래스의 모든 변수의 명칭과 유형을 얻을 수 있음을 알 수 있다.그리고objectsetIvar () 방법은 특정 객체의 구성원 변수에 값을 부여합니다.

좋은 웹페이지 즐겨찾기