![]() |
1
10
简而言之,你不能。 您可以通过以下方式在目标C 1.0 ABI/API中:
但是在Objective-c 2.0中删除了这个函数,因为删除方法几乎永远都不是正确的答案。当然,不足以证明支持所述功能所产生的开销是合理的。 从objc2.0abi中还删除了直接访问类/方法结构的能力。它们现在是不透明的,因此将来可以在不破坏二进制兼容性的情况下进行更改。 不过,您可以做的是使用一个定制代理,它可以改变它响应的一组方法。参见nsproxy类的文档; http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSProxy_Class/Reference/Reference.html 当然,这个问题引出了一个问题“你想做什么?”这样的动态元编程是不典型的。一旦一个类被实例化了,通常不认为需要在先前的实例化可能仍然依赖于所述方法的假设下更改它响应的一组方法。 |
![]() |
2
13
您不能完全“删除”一个方法,但是您可以通过使该方法只将所有内容重定向到消息转发路径(最终将调用的代码)来获得与删除相同的效果。
无论是哪种情况,它都变得简单如下:
请注意,这基本上会阻止任何超类实现,因此如果任何超类可能具有您想要保留的有效实现,则必须更加小心。在这种情况下,你可以得到
|
![]() |
Martin sku · 在目标C中打印时间 3 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 3 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 7 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 7 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 7 年前 |