Edit:
Как указано в комментариях, вы должны включить строку #include <objc/runtime.h>
в исходный файл, чтобы использовать этот фрагмент.
Вы можете использовать этот код (я не помню, где я его нашел), чтобы распечатать все свойства объекта с хорошим форматированием:
- (NSString*)description {
NSMutableString* string = [NSMutableString stringWithString:@""];
unsigned int propertyCount;
objc_property_t* properties = class_copyPropertyList([self class], &propertyCount);
for(unsigned int i = 0; i < propertyCount; i++) {
NSString *selector = [NSString stringWithCString:property_getName(properties[i]) encoding:NSUTF8StringEncoding] ;
SEL sel = sel_registerName([selector UTF8String]);
const char* attr = property_getAttributes(properties[i]);
switch (attr[1]) {
case '@':
[string appendString:[NSString stringWithFormat:@"%s : %@\n", property_getName(properties[i]), [self performSelector:sel]]];
break;
case 'i':
[string appendString:[NSString stringWithFormat:@"%s : %i\n", property_getName(properties[i]), [self performSelector:sel]]];
break;
case 'f':
[string appendString:[NSString stringWithFormat:@"%s : %f\n", property_getName(properties[i]), [self performSelector:sel]]];
break;
default:
break;
}
}
free(properties);
return string;
}