【问题标题】:Alternative to poseAsClass in Mac OS X 10.5 and higher?在 Mac OS X 10.5 及更高版本中替代poseAsClass?
【发布时间】:2010-11-20 08:36:09
【问题描述】:

Apple 已弃用 OS X v10.5 及更高版本的 NSObjectposeAsClass: 方法。还有其他方法可以让课堂摆姿势工作吗?

【问题讨论】:

    标签: cocoa deprecated


    【解决方案1】:

    我不认为有类级别的等价物,但是可以交换两个方法的实现,这通常是使用poseAsClass:的目的(当然,如果需要,您可以交换多个方法覆盖一个类中的多个方法)。您希望在 Objective-C 2.0 运行时 (#import objc/runtime.h) 中使用 method_exchangeImplementations。警告一句:在调用method_exchangeImplementations之后,调用'new'方法实际上调用了原来的方法定义。

    【讨论】:

    • 谢谢!结合使用 mcandre 的答案和您链接到的文档,我设法让它发挥作用。快速说明:我必须 #include "objc/runtime.h" 才能使用您描述的方法。
    【解决方案2】:

    你想做什么?摆姿势通常有很多方法。不过,我会承认,有时这是唯一的方法:)

    【讨论】:

    • 我正在尝试跟踪 Cocoa 应用程序中的所有绑定(和解除绑定)消息。每当在一个对象和另一个对象之间进行绑定时,我想NSLog() 一些调试信息。我最终在NSObject 的绑定方法上使用了method_exchangeImplementations,它成功了。
    • 听起来你做对了 :) 我会警惕在运输代码中这样做。
    【解决方案3】:

    Lap Cat 提供了另一种选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2010-12-15
      相关资源
      最近更新 更多