我的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方法。 首先,这是可能的。如果是这样,我真的很感激任何有关相同的想法或指导。
答案 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 ++实例的技术,但不是相反。