问题标签 [objective-c-runtime]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - 类实例变量的Objective-C模式?
对于可以被子类“覆盖”的类变量,Objective-C 中的一个很好的模式是什么?
常规类变量通常在 Objective-C 中使用文件本地静态变量以及定义为类方法的公开访问器来模拟。
但是,与任何 Class 变量一样,这意味着该值在该类及其所有子类之间共享。有时,子类只为自己更改值是很有趣的。这通常是使用类变量进行配置时的情况。
这是一个例子:在一些 iOS 应用程序中,我有许多给定的公共抽象超类(注释)的对象,它们有许多具体的变体(子类)。所有注释都用标签以图形方式表示,标签颜色必须反映其注释的特定种类(子类)。所以所有的Foo注解都必须有一个绿色的标签,所有的Bar注解都必须有一个蓝色的标签。在每个实例中存储标签颜色会很浪费(实际上,可能是不可能的,因为我有很多对象,并且每个实例共有的实际配置数据远大于单一颜色)。
在运行时,用户可以决定现在所有的 Foo 注释都将带有红色标签。等等。
由于在 Objective-C 中,类是实际的对象,这需要将 Foo 标签颜色存储在 Foo 类对象中。但这可能吗?这种事情的好模式是什么?当然,可以定义某种将类映射到其配置值的全局字典,但这有点难看。
objective-c - 使用块参数反射调用方法
我正在研究一个抽象层,用于从 UIWebView 中的 JavaScript 调用到我的应用程序的本机部分。
为此,我需要一种通用机制,将 JavaScript 函数调用转换为 Objective-C 消息到对象。除了在需要块参数的 Objective-C 对象上调用方法之外,这确实工作得很好。
如何以通用方式调用此类方法,而无需将 NULL 作为块参数传递。我想传递一个通用块,然后可以迭代传递给它的所有参数(变量参数)。
换个说法:有没有办法用块参数通用调用任何方法,尽管这些块的特定类型(即签名的差异),以便我可以在随后执行它们时捕获传递给这些块的参数?
objective-c - 后台服务中具有操作的任务
我已经搜索了一个多小时的谷歌搜索,但我不确定在触发操作的后台服务中添加一些任务是否合法以及是否可能(并将应用程序置于前台)。
对于任务,我的意思是后台服务在指定的时间做某事。我知道它可以通过通知等来调出 IOS 警报......但是一个简单的通知还不够好。
其实我想播放视频,如果这不可能,也许音频?由于将应用程序带到前台是不可能的,或者是吗?
有什么选择?
objective-c - 使用 Objective-C 元数据生成类依赖图
这个人想出了一个非常简洁的工具来生成类依赖图——然而,它依赖于解析你的源代码和寻找#import
指令。
这很整洁,但我有很多问题。其中最重要的是它没有考虑导入的导入,也没有考虑前缀标题,也没有考虑导入引用的文件中的类是否实际被使用。
我想做一些更类似于class-dump
并检查存储在 Mach-O 文件中的 Objective-C 元数据以生成类依赖项的内存表示。
我宁愿不从头开始这样做,所以我想知道:
- 它已经完成了吗?
- 是否有一个开源库可以为我提供提取这些信息所需的基础工具(一个检查 Mach-O 文件并创建其中包含的 Objective-C 信息的外观的库 - 这样我就可以迭代所有类、它们的方法、属性、ivars 等,并扫描对其他类的引用)我认为 class-dump 的源代码将是一个很好的起点。
- 如果您在此类事情上有经验,那么我要完成的工作是否可行?
- 我需要克服哪些障碍?
iphone - iphone sqlite问题
我尝试在我的支持文件文件夹中导入 db 并使用以下方法连接到 db:
我尝试通过插入的代码插入值,但是当我退出程序并检查数据库时,值不存在。我不知道这里出了什么问题。
objective-c - 获取类方法列表
我正在寻找一种方法来获取某个类的静态方法列表。我只得到一个带有运行时函数的实例方法列表class_copyMethodList()
。
有没有办法列出静态方法?
objective-c - Objective-c 运行时是否意味着比直接 c/c++ 程序多一层?
我读过,objective-c 程序需要objective-c 运行时才能运行。
AFAIK,两个 C/C++ 程序都不需要运行任何运行时环境。因为生成的二进制代码是由底层操作系统直接执行的。
所以这意味着 Objective-c 程序需要一个冗余层来运行,对吗?如果是这样,这个层看起来像 Java VM 和 .net 运行时还是看起来像 Qt 运行时(有一些附加库的味道)?
EDIT:
经过一番阅读,我发现 objc 编译器在生成的编译代码中生成了更多信息,这些信息负责许多事情,例如方法传递(objc_sendMsg()
等introspection
)
谢谢。
objective-c - PyObjC:如何删除现有的 Objective-C 类
我之前创建了一个 ObjC 类。我怎样才能再次删除它?因为在以后的某个时候,我想用另一个版本重新创建它。
现在,如果我只是重新声明它,我会得到异常X is overriding existing Objective-C class
。
objective-c - Cocoa:在运行时添加另一个停靠图标
是否可以在运行时向扩展坞添加另一个图标而不使用[NSWorkspace launchApplication:]
?
如何?
在你说“不”之前:我愿意使用诸如此类的东西fork()
。
我实际上尝试了一点,fork()
但我得到了错误:
objective-c - PyObjC:如何创建一个没有 nib 文件的简单虚拟应用程序
由于各种原因,我不能/不想使用 NIB 文件(或任何其他外部资源)。
如何使用 PyObjC(即纯 Python 代码)创建一个简单的虚拟应用程序(例如一些简单的菜单、一些空窗口)?