#import "A.h"
#import <objc/runtime.h>
@implementation A
-(NSArray *)getAllProperty
{
u_int count;
objc_property_t *properties = class_copyPropertyList([self class], &count);
NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count];
for (int i = 0; i < count; i++)
{
const char *propertyName = property_getName(properties[i]);
[propertiesArray addObject:[NSString stringWithUTF8String:propertyName]];
}
free(properties);
return propertiesArray;
}
-(NSDictionary *)propertiesAndValue
{
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
unsigned int count;
objc_property_t *properties = class_copyPropertyList([self class], &count);
for (int i = 0; i <count; i++)
{
const char *char_f = property_getName(properties[i]);
NSString *propertyName = [NSString stringWithUTF8String:char_f];
id propertyValue = [self valueForKey:(NSString*)propertyName];
if (propertyValue)
{
[dictionary setObject:propertyValue forKey:propertyName];
}
}
free(properties);
return dictionary;
}
-(void)printMothodList
{
unsigned int mothedCount_f = 0;
Method *mothedList_f = class_copyMethodList([self class], &mothedCount_f);
for (int i = 0; i < mothedCount_f; i++)
{
Method temp_f = mothedList_f[i];
IMP imp_f = method_getImplementation(temp_f);
SEL name_f = method_getName(temp_f);
const char *name_s = sel_getName(method_getName(temp_f));
int arguments = method_getNumberOfArguments(temp_f);
const char *encoding = method_getTypeEncoding(temp_f);
NSLog(@"方法名:%@, 参数个数:%d ,编码方式:%@",[NSString stringWithUTF8String:name_s],arguments,[NSString stringWithUTF8String:encoding]);
}
free(mothedList_f);
}
@end