【问题标题】:Get the sender of the message for an NSInvocation获取 NSInvocation 消息的发送者
【发布时间】:2014-03-30 14:47:29
【问题描述】:

如何获取包裹在 `NSInvocation 中的消息的发送者?

我在一个对象中,我刚刚在我的forwardInvocation: 中收到了一个调用。 有什么方法可以知道是谁给我发了这条消息?

【问题讨论】:

  • 您可能无法将“发送者”作为对象获取,但理论上可以获取调用函数,因为它应该位于堆栈或链接寄存器中的某个位置。不过,在 95% 的应用程序中可能没有用。
  • 嗯...该功能是什么样的,是通用的还是我可以从中提取有关发件人的一些信息。
  • 你可以使用 NSThread 的callStackSymbols 作为起点。

标签: objective-c cocoa objective-c-runtime message-passing nsinvocation


【解决方案1】:

没有。发件人信息不可用(除非您明确添加 sender:self 参数)。

另请参阅此线程http://www.cocoabuilder.com/archive/cocoa/194746-is-the-sender-of-an-obj-method-implied-in-the-destination-method.html

它不是明确可用的,你也不能始终如一地展开 堆栈以弄清楚。也不能保证 “发送者”实际上是一些 Objective-C 对象;它可以很容易 是一个函数或 FFI 产生的闭包,在各种情况下 语言桥梁。

b.bum

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2015-07-28
    • 2016-04-14
    • 2021-02-24
    相关资源
    最近更新 更多