美文网首页
valueForKeyPath无法找到对象中的属性时崩溃

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

作者: g_h_j | 来源:发表于2020-06-11 16:04 被阅读0次

    比如类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的参数在属性列表里再调用此方法。

    相关文章

      网友评论

          本文标题:valueForKeyPath无法找到对象中的属性时崩溃

          本文链接:https://www.haomeiwen.com/subject/llezjqtx.html