Closed jimmy54 closed 5 years ago
感谢你的发现这个问题🙏我试了下 确实是遍历不到父类的属性。 但我看了下你的代码,给方法加了一个参数,这种修改我不的不慎重查看你的代码。 我们总是希望方法名越短越好 所以我就思考了有没有不修改方法名的解决办法。 runtime类结构里 有super_class的变量,可以通过class_getSuperclass获取。当访问根类时会返回Nil,这种循环遍历的逻辑与我们通过".属性名"的方法的查找顺序是一致的,所以我试了大致如下的修改,并运行测试了,暂时没发现有什么问题 大致形式如下:
Class cla = ((NSObject*)objectArray.firstObject).class; while (cla != Nil){ // 内部逻辑 cla = class_getSuperclass(cla.class); }
修复内容我已经更新, 如果还发现问题欢迎提issue或push上你的优化,谢谢
这样更加完美
感谢你的发现这个问题🙏我试了下 确实是遍历不到父类的属性。 但我看了下你的代码,给方法加了一个参数,这种修改我不的不慎重查看你的代码。 我们总是希望方法名越短越好 所以我就思考了有没有不修改方法名的解决办法。 runtime类结构里 有super_class的变量,可以通过class_getSuperclass获取。当访问根类时会返回Nil,这种循环遍历的逻辑与我们通过".属性名"的方法的查找顺序是一致的,所以我试了大致如下的修改,并运行测试了,暂时没发现有什么问题 大致形式如下:
Class cla = ((NSObject*)objectArray.firstObject).class; while (cla != Nil){ // 内部逻辑 cla = class_getSuperclass(cla.class); }
修复内容我已经更新, 如果还发现问题欢迎提issue或push上你的优化,谢谢