我有一个对象(A)需要作为另一个对象的代理。还有一个条件是,在验证时应该使对象工作为零。
我已实施:
-(void)forwardInvocation:(NSInvocation *)anInvocation
{
if (condition)
[anInvocation invokeWithTarget:self.object];
else
[anInvocation invokeWithTarget:nil];
}
但这还不够。当条件满足并且在unrecognized selector sent to instance
上调用方法时。
答案 0 :(得分:0)
来自NSInvocation类引用中invoke
的文档:
在调用此方法之前,必须设置接收者的目标,选择器和参数值。
如果您尚未设置target
(或将其设置为nil
,这基本上是相同的事情),则不应该调用此调用。如果你想模仿发送消息到nil的行为,你可以只返回0 / nil - 如果目标是nil,这是objc_msgSend的默认行为。如果您有兴趣了解其工作原理,可以查看here,了解objc_msgSend的实现概况(公平警告,全部是汇编)。