【发布时间】:2014-03-29 21:37:40
【问题描述】:
例如:
@implementation MyClass{
NSNumber *something;
}
我希望能够在运行时向特定对象(仅一个实例)添加一些其他类似的对象,而不是整个类。他们已经有指向其他对象的指针,我需要 MyClass 才能使用它们。
用例是这样的。我在另一个实例中,称它为 A,我有一些变量和方法,我想将变量和方法注入 B,执行方法并将它们分离,所以对象 B 是原始的。
*在方法的情况下,我最好不要 class_addMethod 它,而是宁愿只将实现发送到对象 A 以自行执行。
【问题讨论】:
-
那么在您“分离”它们之后发生了什么变化?该方法编辑了一些“原始”实例变量?
-
是的。对象 A 自身的原始变量已被修改。
-
不,你不能这样做。您需要创建一个全新的类(它可能只是
MyClass的子类和更多的 iVar),因为一旦在运行时注册了该类,就不能向其中添加 ivars。但是,可以随时将方法添加到任何类中。 -
也许您可以使用关联对象?它们提供了与实例变量类似的构造。
-
Objective-C 很可能有可能——有许多非常奇怪的函数可以用来在运行时修改类或对象——但是接口非常神秘和“危险”,所以最好建议你找到一种不同的技术。
标签: objective-c objective-c-blocks objective-c-runtime objective-c-category