我试图从这里遵循(精彩)指令,但我有一个类的实例,我不能通过子类修改.有没有办法只将方法覆盖到类的实例?
谨防.你即将在ObjC中输入一些相当深刻的魔法,你可以产生的各种错误是令人费解的.这些是在其他所有方法都失败后应该使用的最后一种技术,您应该尽一切可能隔离此代码.也就是说,ObjC是一种高度动态的语言,你可以重新连接大多数东西.
首先,对于您的具体问题,您可以更改实例的类,这将实现您想要的.规则基本上是:
如果你做错了,你将不会收到任何警告或错误.你只会遇到奇怪的崩溃.
鉴于此,更改对象的类实际上非常简单:
object->isa = [NewClass class];
Run Code Online (Sandbox Code Playgroud)
除此之外,您可以使用方法调配为每个类的实例更改方法的实现.我在使用method_exchangeImplementations()的Hijacking中有一些这样的例子.不过,一旦你完成了这个,你可以使用调试器.
| 归档时间: |
|
| 查看次数: |
987 次 |
| 最近记录: |