gpt4 book ai didi

ios - 如何在运行时访问类的源代码级定义?

转载 作者:行者123 更新时间:2023-11-29 03:12:18 24 4
gpt4 key购买 nike

如何访问在(预或实际)编译时从 header 收集的 Objective-C 类接口(interface)定义,以便我可以提供符合定义的公共(public)接口(interface)的内省(introspection)。

问题:F-Script、SuperDB、IKBClassBrowser、CBIntrospection 使用 class_copyPropertyList() 系列函数在运行时自省(introspection)对象。虽然功能强大,但也有缺点......

  1. 运行时没有私有(private)和公共(public)的概念......一切都是返回
  2. 我看不到一种可靠的方法来访问 ObjC 类型方法参数和返回

目标:我正在研究一款 iOS 应用程序,以帮助通过实时/即时开发环境(类似于 SmallTalk、F-Script、SuperDB、IKBClassBrowser、CBIntrospection)教授编码。我希望用户通过虚拟机内省(introspection)对象、发送消息、创建新对象以及构建和运行代码。 但我想将功能限制为公共(public)函数(否则 Apple 不可能批准该应用程序)并且我想访问类型,因此我进行限制,以便用户只能传递合法对象.

我希望有某种方法可以访问Clang符号文件,以我可以在运行时使用它的方式提取此信息>。它不必完全自动化(我可能想以某些方式限制功能)

最佳答案

您遇到了 Objective-C 的显着特征之一:没有私有(private)或公共(public) API 这样的东西。只有记录的 API 与未记录的 API。您可以随时调用任何对象的任何方法,无论它是否出现在头文件中。公共(public)/私有(private)的区别只存在于编译器;在运行时,它们不存在,并且没有办法逆转这个过程并辨别头文件可能说了什么。

关于ios - 如何在运行时访问类的源代码级定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133140/

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