使用objc/runtime.h
我们可以在运行时创建类。如何从运行时创建的类中导出.h
和.m
文件?
答案 0 :(得分:1)
创建.h
在概念上是可行的,但您需要自己编写代码来执行此操作(使用ObjC运行时调用来检查类,然后手动编写文件)。我不知道有谁编写过这段代码,但编写它可能是对ObjC运行时函数的一个很好的介绍。请注意,.h
可能不会非常友好。例如,方法签名中的所有对象类型都是id
。所以它有点用,但我想不出很多我想要的方法。
在这里创建.m
并没有多大意义。运行时生成的类的实现将是一堆到现有函数的IMP指针(它们本身已经是编译代码)。我不知道你期望在.m
中得到什么。原则上,您可以扫描可执行文件以找出函数的名称,然后写出.m
看起来像:
- (void)someMethod {
SomeMethod_IMP()
}
这可能会变得非常复杂,而且我可以想象在一般情况下会引起你的几个角落案例。
这通常不是如何使用动态生成的类,在极少数情况下使用它们。它们在KVO中无处不在(但你永远不会想要.h
),并且它们的其他用途有点相似:它们通常是现有界面的一些神奇子类,所以你永远不会与它们互动直接(并且它们几乎总是与它们的超类具有相同的API)。你真的想解决什么问题?
答案 1 :(得分:0)
要获得实现,您必须找到或编写一个工具来将程序集转换回Objective-C。
仅生成标题(接口),有可用的工具。使用Google。
答案 2 :(得分:-2)
你不能告诉Objective-C运行时从.h和.m文件创建一个新类,因为它需要一个编译器。您需要对项目中的创建进行硬编码。
然后你可以使用新的类。