valueForKeyPath无法找到对象中的属性时崩溃

2020-06-11  本文已影响0人  g_h_j

比如类Test:

@interface Test : NSObject

@property(nonatomic,copy)NSString* str;

@end

Test* t = [[Test alloc]init];

 t.str=@"1111";

id str1 = [t valueForKeyPath:@"str"];

id str2 = [t valueForKeyPath:@"strstr"];

执行到id str2 = [t valueForKeyPath:@"strstr"];会crash,用@try{}@cache{}也无法扑获异常,还是会crash.

这时可以用下面的方法:

unsigned int properties_count;

objc_property_t*properties =class_copyPropertyList([Test class], &properties_count);

 for(inti =0; i < properties_count; i++)

 {

        objc_property_tproperty = properties[i];

        NSLog(@"name:%s",property_getName(property));

  }

获取属性列表。

确定valueForKeyPath的参数在属性列表里再调用此方法。

上一篇下一篇

猜你喜欢

热点阅读