【问题标题】:static method NSInvocation静态方法 NSInvocation
【发布时间】:2014-06-05 11:56:49
【问题描述】:

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

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

这对我们的实例方法非常有用,我们为此向 NSInvocation 提供对象和适当的数据。但是,我们可以对静态方法做同样的事情吗?

【问题讨论】:

  • Objective-C 中没有“静态方法”。有“类方法”,它们在运行时动态调度,而不是在编译时静态查找。

标签: ios objective-c core-foundation nsinvocation


【解决方案1】:

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

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

然后您可以在创建时将NSMethodSignature 提供给您的NSInvocation

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];

【讨论】:

  • 还要注意,类方法的target 应该是类对象。类似invocation.target = [MyClass class].
猜你喜欢
  • 2012-07-14
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2011-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多