gpt4 book ai didi

objective-c - NSClassFromString 返回一个没有正确响应 isSubClassOfClass 的 Class 对象

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:29 25 4
gpt4 key购买 nike

我有一个正在测试的类,它使用大量运行时类型识别(反射)来决定行为方式。

具体来说,我使用 property_getAttributes 和一点字符串魔法获取给定类型的 Class

假设解析的类是 MyInheritedObject。然后我需要检查这个类是否继承自公共(public)基类 MyBaseObject

因此,给定字符串:“MyInheritedObject”,我使用 NSClassFromString 来获取类实例,如下所示:

NSString *className = @"MyInheritedObject";
Class cls = NSClassFromString(className);
BOOL isSubclass = [cls isSubclassOfClass:[MyBaseObject class]];

这会返回 NO,这令人难以置信。不过,如果我注销父类(super class),它看起来应该可以正常工作:

NSLog(@"Superclass: %@", [cls superclass]);
//logs: Superclass: MyInheritedObject

所以目前我正在使用字符串比较来继续我的工作,但这是一个可怕的 hackety-hack,我不能就这样离开它。

不确定它是否相关,但这是从测试目标发生的,所以有问题的类被添加到两个目标。

对这里发生的事情有什么想法吗?

最佳答案

NSString *className = @"MyInheritedObject";
Class indirectClass = NSClassFromString(className);
Class directClass = [MyInheritedObject class];
BOOL isSubclass = [indirectClass isSubclassOfClass:directClass];

如果你这样做,(indirectClass == directClass) 吗?

关于objective-c - NSClassFromString 返回一个没有正确响应 isSubClassOfClass 的 Class 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com