iOS 遍历某一对象的属性和方法
/* 注意:要先導入ObjectC運行時頭文件,以便調用runtime中的方法*/
#import<objc/runtime.h>
@implementationNSObject (PropertyListing)
1、/* 獲取對象的所有屬性,不包括屬性值 */
- (NSArray*)getAllProperties
{
u_intcount;
objc_property_t*properties =class_copyPropertyList([selfclass], &count);
NSMutableArray*propertiesArray = [NSMutableArrayarrayWithCapacity:count];
for(inti =0; i<count; i++)
{
constchar* propertyName =property_getName(properties[i]);
[propertiesArrayaddObject: [NSStringstringWithUTF8String: propertyName]];
}
free(properties);
returnpropertiesArray;
}
2、/* 獲取對象的所有屬性 以及屬性值 */
- (NSDictionary*)properties_aps
{
NSMutableDictionary*props = [NSMutableDictionarydictionary];
unsignedintoutCount, i;
objc_property_t*properties =class_copyPropertyList([selfclass], &outCount);
for(i =0; i<outCount; i++)
{
objc_property_tproperty = properties[i];
constchar* char_f =property_getName(property);
NSString*propertyName = [NSStringstringWithUTF8String:char_f];
idpropertyValue = [selfvalueForKey:(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<mothCout_f;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,[NSStringstringWithUTF8String:encoding]);
}
free(mothList_f);
}
@end
總結
以上是生活随笔為你收集整理的iOS 遍历某一对象的属性和方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shiro身份认证---转
- 下一篇: 转载及总结:cron表达式详解,cron