2014-06-05 66 views
0

是否可以使用NSInvocation进行静态方法调用?静态方法NSInvocation

我们使用NSInvocation来简化我们在非公共方法的单元测试中的方法调用。

这对我们的实例方法非常有用,为此我们为NSInvocation提供了一个对象和适当的数据。但是,我们可以使用静态方法吗?

+1

有没有“静态方法”,在Objective- C。有“类方法”,它们在运行时动态调度,在编译时没有静态查找。 – user102008

回答

1

是的,你可以。假设你的类是MyClass,你的方法是+(void)myClassMethod:(id)sender;,你可以使用:

NSMethodSignature *signature = [MyClass methodSignatureForSelector:@selector(myClassMethod:)]; 

然后创建的时候可以提供NSMethodSignatureNSInvocation

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; 
+1

还要注意类方法的'target'应该是一个类对象。类似于'invocation.target = [MyClass class]'。 –