【问题标题】:AOP like construct with objective-cAOP 类似于 Objective-c 的构造
【发布时间】:2012-02-18 14:28:53
【问题描述】:

我正在寻找一种简单、廉价、可靠的解决方案来拦截使用 Objective-c 2.0 的方法调用。应该可以执行 pre / post 块并在其间运行原始方法。

我知道我可以调配方法 - 用可以调用原始方法并允许我执行前/后块的东西替换 IMP。这看起来很简单,速度非常快,并且应该在标准情况下工作。知道是否有更好的运行时魔术方法来解决这个问题吗?

PS 可移植性无关紧要 - 它只能在 OS X 和 iOS 上与苹果运行时一起运行。

【问题讨论】:

  • 您提出了一个建议的解决方案,而不是实际的问题。你想解决什么问题?
  • 它不是关于特定问题 - 更多关于解决将前/后代码添加到现有方法的一般情况。我经常用它来检查参数、ret-vals、跟踪实例、记录一些东西等。我只是不确定什么是最好的方法。
  • 一个通用的替代方法是挂钩objc_msgSend 函数。一个挂钩它的例子是here_builtin* 在 clang 下不可用,所以你必须在那里进行一些调整
  • 你可能想看看这个stackoverflow.com/questions/1508396/…

标签: objective-c ios macos


【解决方案1】:

Objective-C 有一种面向方面的方法:

AspectOrientedObjectiveC

我没用过,不知道靠谱吗。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多