https://blog.csdn.net/crazychickone/article/details/36413671/
/* 注意:要先导入ObjectC运行时头文件,以便调用runtime中的方法*/
#import
@implementationNSObject (PropertyListing)
1、/* 获取对象的所有属性,不包括属性值 */
- (NSArray *)getAllProperties
{
u_int count;
objc_property_t *properties =class_copyPropertyList([self class], &count);
NSMutableArray *propertiesArray = [NSMutableArray arrayWithCapacity:count];
for(int i =0; i
{
const char* propertyName =property_getName(properties[i]);
[propertiesArray addObject: [NSString stringWithUTF8String: propertyName]];
}
free(properties);
return propertiesArray;
}
2、/* 获取对象的所有属性 以及属性值 */
- (NSDictionary*)properties_aps
{
NSMutableDictionary *props = [NSMutableDictionarydictionary];
unsignedintoutCount, i;
objc_property_t*properties =class_copyPropertyList([selfclass], &outCount);
for(i =0; i
{
objc_property_tproperty = properties[i];
constchar* char_f =property_getName(property);
NSString*propertyName = [NSString stringWithUTF8String:char_f];
idpropertyValue = [self valueForKey:(NSString*)propertyName];
if(propertyValue) [propssetObject:propertyValueforKey:propertyName];
}
free(properties);
returnprops;
}
3、/* 获取对象的所有方法 */
-(void)printMothList
{
unsignedintmothCout_f =0;
Method* mothList_f =class_copyMethodList([selfclass],&mothCout_f);
for(inti=0;i
{
Methodtemp_f = mothList_f[i];
IMPimp_f =method_getImplementation(temp_f);
SELname_f =method_getName(temp_f);
constchar* name_s =sel_getName(method_getName(temp_f));
intarguments =method_getNumberOfArguments(temp_f);
constchar* encoding =method_getTypeEncoding(temp_f);
NSLog(@"方法名:%@,参数个数:%d,编码方式:%@",[NSStringstringWithUTF8String:name_s],
arguments,[NSString stringWithUTF8String:encoding]);
}
free(mothList_f);
}
@end