iOS의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 () 방법은 특정 객체의 구성원 변수에 값을 부여합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.