NSInvocation - 如何从forwardInvocation内部确定消息所指向的对象:

时间:2014-03-30 12:45:46

标签: objective-c objective-c-runtime

sourceObject和destinationObject都是SameClass的实例。 SameClass是一个Singleton。基本上相同的对象有两个不同的名称,并且在方法级别具有基于此不同的行为。我有这些代码行: (这里有一个对称,我需要它们调用相同的方法,但在两个不同的情况下在两个不同的地方)

//some code in some place
    [singleton1Object increase: 20];


//some code in a completely different place
    [singleton2Object increase: 40];

singleton1Object或singleton2Object都没有实现增加:相反,它们都使用它来指示每个方向(其他对象)的消息

forwardInvocation
- (void)forwardInvocation:(NSInvocation *)anInvocation
{
    //determine where the message came from
}

有没有办法确定最初收到的代码singleton1Object或singleton2Object的哪一部分会增加:并根据forwardInvocation内部决定路由的位置:?

注意:Singleton向自己发送消息,他既是发送者又是接收者。他通过代码中的两个或多个名称来引用自己,存储在其中的两个变量中,他一直这样做,直到它从一个方法到另一个方法,他不知道在哪种情况下他将消息转发给另一个对象。我在代码中的位置,主要由singleton1Object和singleton2Object决定,或者其他一些技术有我转发消息的线索。编辑了问题,请参阅编辑以获取更多详细信息。

1 个答案:

答案 0 :(得分:0)

forwardInvocation中,self是邮件的接收者。

调用对象不包含有关邮件的初始发件人的信息。