1

我的 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 方法。首先,这是否可能。如果是这样,我将非常感谢您对此的任何想法或指导。

4

2 回答 2

2

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

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

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

于 2012-10-22T13:58:37.020 回答
0

看看这个帖子:

将 C++ 与 Cocoa 一起使用而不是 Objective-C?

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

编辑

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

我发现了一些在 Objective C 中使用 C++ 实例的技术,但反之则不然。

于 2012-10-22T12:21:16.997 回答