- (NSString *)serializeObject:(id)theObject
{
NSString *className = NSStringFromClass([theObject class]);
const char *cClassName = [className UTF8String];
id theClass = objc_getClass(cClassName);
unsigned int outCount, i;
// Method *methods = class_copyMethodList(theClass, &outCount);
// for (i = 0; i < outCount; i++) {
//
//
// Method method = methods[i];
//
// SEL sel = method_getName(method);
//
// NSLog(@"%@",NSStringFromSelector(sel));
//
//
// }
objc_property_t *properties = class_copyPropertyList(theClass, &outCount);
NSMutableArray *propertyNames = [[NSMutableArray alloc] initWithCapacity:1];
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
NSString *propertyNameString = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
[propertyNames addObject:propertyNameString];
// [propertyNameString release];
NSLog(@"%s %s\n", property_getName(property), property_getAttributes(property));
}
NSMutableDictionary *finalDict = [[NSMutableDictionary alloc] initWithCapacity:1];
for(NSString *key in propertyNames)
{
SEL selector = NSSelectorFromString(key);
id value = [theObject performSelector:selector];
if (value == nil)
{
value = [NSNull null];
}
[finalDict setObject:value forKey:key];
}
// [propertyNames release];
// NSString *retString = [[CJSONSerializer serializer] serializeDictionary:finalDict];
NSString *retString = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:finalDict options:0 error:nil] encoding:NSUTF8StringEncoding];
// [finalDict release];
return retString;
}
iOS反射机制,获取方法名和描述属性
最新推荐文章于 2019-07-01 18:13:14 发布