将NSTimer添加到C ++类

时间:2012-10-22 10:41:27

标签: c++ objective-c nstimer

我的objective-c应用程序(TC.h和TC.mm)中有一个c ++类,它有两个方法如下。

//TC.h
class TC 
{
public:
  void SetupPollTimer();
  void Timeout();
}

//TC.mm
void TC::Timeout() 
{
    //Inside timer handler

}
void TC::SetupPollTimer() 
{
    //Setup Timer
    //Want to use NSTimer here..

}

基本上当我调用SetupPollTimer()时,我想用NSInvocation启动一个NSTimer,以便它重复调用Timeout方法。 首先,这是可能的。如果是这样,我真的很感激任何有关相同的想法或指导。

2 个答案:

答案 0 :(得分:2)

在这种情况下,您只需使用CoreFoundation等效项; CFRunLoopTimer。

使用NSTimer通常意味着您需要一个绑定objc对象类型作为计时器回调的参数。

这样做,您可以将TC的this设置为计时器回调的上下文信息。然后,您就可以在回调中访问TC实例。

答案 1 :(得分:0)

看一下这篇文章:

Use C++ with Cocoa Instead of Objective-C?

显然,你不能完全用C ++编写Cocoa-Applications,但是有很多方法可以在C ++和Objective C之间共享代码。

修改

好的,另一种选择是将计时器添加到处理该CPP文件的类中,并在NSTimer在处理程序文件中触发时触发CPP方法。

我找到了一些在Objective C中使用C ++实例的技术,但不是相反。