2
런타임 방법을 사용하지 않고 객관적인 -c로 객체의 속성을 프로그래밍 방식으로 가져올 수 있습니까? 나는 변화가 없을 때 런타임에 확인하는 것이 불필요 해 보이기 때문에 묻는다. 나는이 효과에 뭔가 생각 해요 :Objective-C 객체 속성의 내부 검사
MyObject *foo = [[MyObject alloc] init];
NSDictionary *propertiesNamesAndValues = [foo getAllProperties];
현재 내 솔루션은 다음과 같습니다
id currentClass = [MyObject class];
NSString *propertyName;
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList(currentClass, &outCount);
for (i = 0; i < outCount; i++)
{
objc_property_t property = properties[i];
propertyName = [NSString stringWithCString:property_getName(property)];
NSLog(propertyName);
NSLog(@"%@",[foo valueForKey:propertyName]);
}
기본적으로'getAllProperties'라는 코드 주위에 래퍼가 필요합니까? NSObject의 카테고리에 코드를 추가하는 것만 큼 좋을까요? – mattjgalloway
'NSDictionary * propertiesNamesAndValues = [foo getAllProperties]; '는 현재 솔루션과 마찬가지로 런타임에 실행됩니다. @mattjgalloway와 마찬가지로, 메소드에 해당 기능을 캡슐화 할 수 있는지 묻는 것처럼 보입니다. 대답은 '예'입니다. – Chuck