![](/img/trans.png)
[英]Swallow doesnotrecognizeselector exception from an NSInvocation forwardInvocation call
[英]NSInvocation - How to figure out who the message was directed to from inside forwardInvocation:
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或其他技术确定)可以提供将消息转发到何处的线索。 编辑了问题,请参阅编辑以获取更多详细信息。
在forwardInvocation
, self
是消息的接收者。
调用对象不包含有关消息的初始发送者的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.