Возможно ли программно получить свойства объекта в объекте-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