IOS 遍歷未知物件的屬性和方法

2021-09-08 19:21:36 字數 1949 閱讀 4114

/* 注意:要先導入objectc執行時標頭檔案,以便呼叫runtime中的方法*/

#import 

@implementation nsobject (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; iconst char* propertyname =property_getname(properties[i]);

[propertiesarray addobject: [nsstring stringwithutf8string: propertyname]];   

free(properties);   

return propertiesarray;  

2、/* 獲取物件的所有屬性 以及屬性值 */

- (nsdictionary *)properties_aps

nsmutabledictionary *props = [nsmutabledictionary dictionary];   

unsigned int outcount, i;   

objc_property_t *properties = class_copypropertylist([self class], &outcount);   

for (i = 0; iobjc_property_t property = properties[i];

const char* char_f =property_getname(property);

nsstring *propertyname = [nsstring stringwithutf8string:char_f];

id propertyvalue = [self valueforkey:(nsstring *)propertyname];   

if (propertyvalue) [props setobject:propertyvalue forkey:propertyname];   

free(properties);   

return props;   

3、/* 獲取物件的所有方法 */

-(void)printmothlist

unsigned int mothcout_f =0;

method* mothlist_f = class_copymethodlist([self class],&mothcout_f);

for(int i=0;imethod temp_f = mothlist_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(mothlist_f);

@end

IOS 遍歷未知物件的屬性和方法

注意 要先導入objectc執行時標頭檔案,以便呼叫runtime中的方法 import implementation nsobject propertylisting 1 獲取物件的所有屬性,不包括屬性值 nsarray getallproperties free properties retur...

IOS 遍歷未知物件的屬性和方法

注意 要先導入objectc執行時標頭檔案,以便呼叫runtime中的方法 import implementation nsobject propertylisting 1 獲取物件的所有屬性,不包括屬性值 nsarray getallproperties free properties retur...

IOS 遍歷未知物件的屬性和方法

注意 要先導入objectc執行時標頭檔案,以便呼叫runtime中的方法 import implementation nsobject propertylisting 1 獲取物件的所有屬性,不包括屬性值 nsarray getallproperties free properties retur...