从基类到所有后代遍历类层次结构

2023-12-15

在我正在编写的 iOS 应用程序中,我想遍历类层次结构以列出所有子类的清单。我的意图是使用每个子类类型作为键 - viaNSStringForClass()——在字典里。

我的动机是能够自动发现基类的所有变体,以便我可以调用与该类关联的方法。出于分工的原因,我不喜欢在这里使用方法覆盖。

这样的遍历可以吗?它将如何运作?


这是一个例子。此方法将返回您发送消息的类的所有子类。

@interface NSObject (Debugging)

+ (NSArray *) allSubclasses;

@end

@implementation NSObject (Debugging)

+ (NSArray *) allSubclasses
{
    Class myClass = [self class];
    NSMutableArray *mySubclasses = [NSMutableArray array];

    unsigned int numOfClasses;
    Class *classes = objc_copyClassList(&numOfClasses);
    for (unsigned int ci = 0; ci < numOfClasses; ci++) {
        // Replace the code in this loop to limit the result to immediate subclasses:
        // Class superClass = class_getSuperclass(classes[ci]);
        // if (superClass == myClass)
        //  [mySubclasses addObject: classes[ci]];
        Class superClass = classes[ci];
        do {
            superClass = class_getSuperclass(superClass);
        } while (superClass && superClass != myClass);

        if (superClass)
            [mySubclasses addObject: classes[ci]];
    }
    free(classes);

    return mySubclasses;
}

@end

根据需要修改,进行递归调用等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从基类到所有后代遍历类层次结构 的相关文章

  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属
  • 添加/删除带有动画的 UITableViewCell?

    我知道这听起来像是一个愚蠢的问题 但我到处都看过 我怎样才能做到这一点 我知道如何使用 swype to delete 方法来执行此操作 但是我如何在该函数之外执行此操作 请发布一些代码示例 Thanks Coulton self tabl
  • iPhone/Objective-C - 呈现视图和委托时的 UIDocumentInteractionController 类参考

    我在用UIDocumentInteractionController在我的应用程序中 以便在我的应用程序中呈现 Instagram 过滤器屏幕 如下所述 http instagram com developer iphone hooks h
  • 高效创建 x 层深度的嵌套 for 循环

    这可能是一件简单的事情 但我需要创建一个循环结构 使其循环 y x 次以创建 x 和 y 的所有可能组合 例如 如果有 4 个 x 每个 x 有 2 个 y 我想做这样的事情 for int a 0 a lt y a for int b 0
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • ios7 navigationController PushViewController 动画错误

    看来我在 navigationController PushViewController 方法中发现了一个错误 为了重新创建它 我采用了示例主详细信息项目并对 didSelectRow method void tableView UITab
  • 从命令行调试 iOS 应用程序构建

    我正在通过命令行构建 iOS 应用程序 但在调试它时遇到问题 如果我使用 XCode 进行构建 它会让我在设备上 构建和调试 而不会出现任何问题 但现在 我不知道如何使用 gdb 在设备上启动它并逐步执行它 如果我尝试 添加自定义目标 可执
  • iPhone UINavigationBar 使用 [UINavigationBar 外观] 更改所有控制器的字体样式

    我知道我可以单独更改导航栏的字体 如本答案所述 更改导航栏的字体 https stackoverflow com questions 5832036 change the navigation bars font 目前我正在使用一种更全局的
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • iphone:如何停止快门动画?

    我有两个问题 1 我想知道如何在相机加载时停止快门动画 我正在使用 UIImagePickerController 我已经参考了堆栈溢出的许多答案 但没有成功 2 我在相机中有一个自定义按钮 使用cameraOverlayView并想通过单
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • 如何使 for 循环以与 NSLog(@"%@", arrData) 相同的顺序迭代

    我执行了以下代码NSLog arrData 调试器中的输出预计如下所示 0 first name John 1 first name Florence 2 first name Melinda 3 first name Zack 然后我执行
  • 如何在iOS应用程序中捕获用户的手写签名[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在我的应用程序中 用户将请求客户提供数字化的手写签名 我需要能够在用户在触摸屏上 书写 签名时捕获签名
  • 如何在 Xcode 4 中在 .h 和 .m 之间切换

    刚刚安装的 Xcode 4 到目前为止一切顺利 除了 Apple 更改了所有键盘快捷键 有人知道如何在 h 和 m 之间切换吗 苹果改变了各种快捷键 但要在标头和实现之间切换 新的快捷键是 You can change it back to
  • 多次添加同一个子视图来查看

    我不知道这是否可行 但我想做的是将子视图多次添加到视图中 我尝试过这样的事情 self view addSubview newView newView center CGPointMake 160 100 self view addSubv
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • iPhone 快照,包括键盘

    我正在寻找拍摄整个 iPhone 屏幕 包括键盘 的正确方法 我找到了一些截取屏幕的代码 CGRect screenCaptureRect UIScreen mainScreen bounds UIView viewWhereYouWant
  • 我应该在哪个方法中设置 UITextField 的委托?

    在 viewDidLoad 或 init 方法中设置 UITextField 的委托是一个好习惯吗 我尝试在 init 方法中将委托设置为 self 但它没有调用相应的委托方法 当我将代码移动到 viewDidLoad 中时 它注册为将 s

随机推荐

  • 在 JBoss 上使用 Spring MVC Java Config 出现 404 错误

    我使用 Java Config 编写了一个小型 Spring MVC 应用程序 它在 Tomcat 上工作得很好 但在 JBoss EAP 6 2 上却不行 它已成功部署在 JBoss 上 但当我请求 Spring MVC 定义的任何页面和
  • Durandal 2.0 自定义对话框

    我希望制作一个 Durandal 自定义对话框 在现有的可组合视图模型周围添加一个带有标题和页脚的窗口框架 我制作了一个 customModal html 模板 div class messageBox div class modal he
  • Wordpress AJAX 不起作用 - 响应 0

    我想为我的插件添加 AJAX 支持 但我对这个简单的事情有很大的问题 WordPress 不允许我使用普通 AJAX 我需要使用 WordPress 版本 在任何时候 WordPress 函数 应该生成输出 都会返回 0 我认为原因是 WP
  • 为什么我会收到SettingWithCopyWarning a value is试图在切片副本上设置的警告? [复制]

    这个问题在这里已经有答案了 运行以下代码时 import pandas as pd df pd DataFrame A 1 2 3 B 2 4 8 df2 df df A lt 3 df2 C 100 我收到以下警告 SettingsWit
  • 在内存有限的情况下,如何优雅地降低性能?

    过去几天我一直在尝试消除游戏中的内存泄漏 从而导致许多内存不足错误 我即将添加大量图形 虽然不是非常复杂 但会显着增加系统的处理要求 而且我有点担心我的内存使用情况 我希望有人可能有给我一些建议 我不想低于 Android 2 1 所以请为
  • 如何动态更改Viewpager选项卡颜色?

    如何像这样改变标签的颜色 当我单击 滑动到绿色或任何其他选项卡时 选项卡颜色应更改为适当的颜色 其余其他选项卡颜色应更改为黑色 我怎样才能做到这一点 我正在使用 Viewpager 我在 onpagelistener 中尝试了这段代码 if
  • Java - .Net 对象交换,不基于 Web

    我有一个用 C 实现的客户端 服务器系统 客户端和服务器通过序列化 反序列化交换 Net 对象并通过 TCP IP 进行通信 它在本地网络上运行 不是基于 Web 或基于 Internet 现在我想包括通过 wifi 连接的 Android
  • 如何将透视变换应用于 UIView?

    我正在寻找对 UIView 执行透视变换 例如在 coverflow 中看到的 有谁知道这是否可能 我调查过使用CALayer并浏览了所有务实程序员的核心动画播客 但我仍然不清楚如何在 iPhone 上创建这种转换 任何帮助 指示或示例代码
  • 未捕获的错误:未找到“App\Kernel”类

    当我想运行任何 php bin console 命令时 我目前面临一个重要问题 Symfony Component ErrorHandler Error ClassNotFoundError 29 message Attempted to
  • 使大型处理工作变得更小

    这是我在寻找解决方案时使用的代码 public function indexAction id3 options options array version gt 3 0 encoding gt Zend Media Id3 Encodin
  • 我可以确定当前的测试执行人员是来自测试实验室还是来自 QTP IDE 中的交互式测试?

    检查当前 QTP 测试执行是否是交互式的 即不是从 QC 测试实验室启动的 QC 测试集执行的一部分 的最有效方法是什么 你们知道一个很酷的方法吗 WR 曾经有一个批处理运行标志 对于 IDE 内的所有执行 该标志都会被可靠地清除 也许QT
  • Bootstrap 4 - 粘性页脚 - 动态页脚高度

    我需要在我的页面上放置一个粘性页脚 但是我没有为页脚设置明确的高度 在较小的屏幕上 行的大小会调整 页脚会变长 因此 getbootstrap 上提供的默认粘性页脚示例不起作用 因为它需要固定的页脚高度 有什么方法可以实现这个吗 Stick
  • 使用 Apache poi 从 docx 获取文本样式

    我正在尝试从 MS docx 文件中获取样式信息 使用添加的样式 如粗体 斜体 编写文件内容没有问题 字体大小等 但读取文件内容并获取样式信息不太清楚 我尝试过使用 XWPFDocument 这个 API 似乎没有读取样式的能力 我现在正在
  • 如何在使用 swift 继续访问视图控制器之前实例化并加载视图控制器

    当我从 viewController A 转到 viewController B 时 我遇到了一个问题 在继续执行之前大约有 5 秒的延迟 我相信这是由于我在 viewDidLoad 中加载的视图数量所致 我有一个 xib 文件 其中包含代
  • 我可以在电子邮件中嵌入 Twitter 源吗?

    我即将向我的客户发送一封电子邮件活动 电子邮件将以 HTML 格式发送 我想在电子邮件中嵌入 Twitter 提要 类似于您在博客和网站中看到的嵌入 Twitter 小部件 当我复制并粘贴通过 Twitter 网站生成的代码时 我的电子邮件
  • 如何使用单声道解决 OSX 上的 SecureChannelFailure

    我正在尝试访问https geocoder cit api here com在单声道上使用 NET F 我正在使用Http帮手来自FSharp Data使用以下代码 let baseUrl https geocoder cit api he
  • 每个奇特的指针都应该是迭代器吗?

    我正在为 C 开发基于段的内存分配器 在这个分配器中 当你释放一块内存时 你必须知道是哪块内存segment它来自 因此 我将指向该段的指针存储为花哨的成员pointer从分配器返回allocate功能 只是为了显示我正在谈论的界面 这是f
  • Android - GCM 服务器密钥不适用于 Urban Airship

    我正在尝试将 Urban Airship 推送通知服务集成到我的 android 项目中 我在 google 开发者控制台中创建了一个新项目 并创建了一个 GCM 服务器密钥 我也在 Urban Airship 配置中添加了该 GCM 密钥
  • 使用实体框架我想仅包含第一个子对象而不是子对象的子对象(子的子对象)

    使用实体框架我想仅包含第一级子对象而不是子对象的子对象 我有这两门课 public class BusinessesTBL public string ID get set public string FirstName get set p
  • 从基类到所有后代遍历类层次结构

    在我正在编写的 iOS 应用程序中 我想遍历类层次结构以列出所有子类的清单 我的意图是使用每个子类类型作为键 viaNSStringForClass 在字典里 我的动机是能够自动发现基类的所有变体 以便我可以调用与该类关联的方法 出于分工的