objective-c – 发现Obj-C中给定类的子类

前端之家收集整理的这篇文章主要介绍了objective-c – 发现Obj-C中给定类的子类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法在运行时发现给定类中存在哪些子类?

编辑:从迄今为止的答案我想我需要澄清一点我想要做的.我知道这不是Cocoa的常见做法,也可能带有一些注意事项.

我正在使用动态创建模式编写一个解析器. (参见Buck和Yacktman的Cocoa Design Patterns第5章)基本上,解析器实例处理堆栈,并实例化知道如何执行某些计算的对象.

如果我可以获得MYCommand类的所有子类,我可以为用户提供可用命令的列表.此外,在第5章的示例中,解析器具有替代字典,因此可以使用像 –,*和/的操作符. (它们映射到MYAddCommand等)对我来说,这个信息似乎属于MyCommand子类,而不是解析器实例,因为它有点失败了动态创建的想法.

解决方法

而不是尝试自动注册MYCommand的所有子类,为什么不将问题分为两个?

首先,提供注册类的API,像[MYCommand registerClass:].

然后,在MYCommand中创建代码,这意味着任何子类将自动注册.就像是:

@implementation MYCommand
+ (void)load
{
    [MYCommand registerClass:self];
}
@end
原文链接:https://www.f2er.com/c/112857.html

猜你在找的C&C++相关文章