Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa中的命令行工具_Cocoa - Fatal编程技术网

Cocoa中的命令行工具

Cocoa中的命令行工具,cocoa,Cocoa,我创建了一个简单的命令行工具,输出“helloworld”。这是在main()函数中完成的 在一个单独的应用程序中,我可以在hello world工具的输出中创建一个NSTask管道,并成功地使用它 不过,我需要我的命令行工具每秒输出一些东西(我正在简化这个)。在其他地方,我使用了一个NSTimer来实现这一点没有问题,但是在main()函数中创建一个NSTimer不允许我将“self”设置为目标(我猜是因为它不是一个对象) 正确的结构方式是什么?该工具只需每秒输出一次“hello world”

我创建了一个简单的命令行工具,输出“helloworld”。这是在main()函数中完成的

在一个单独的应用程序中,我可以在hello world工具的输出中创建一个NSTask管道,并成功地使用它

不过,我需要我的命令行工具每秒输出一些东西(我正在简化这个)。在其他地方,我使用了一个NSTimer来实现这一点没有问题,但是在main()函数中创建一个NSTimer不允许我将“self”设置为目标(我猜是因为它不是一个对象)

正确的结构方式是什么?该工具只需每秒输出一次“hello world”,直到进程停止(由作为NSTask启动它的应用程序停止)

那么
sleep()函数呢

int main(...) {
  while(1) {
    printf("Hello world!\n");
    sleep(1);
  }
  return 0;
}

怎么样?

我的方法是创建一个类(单独创建或在main.m文件中创建)。为此,请写(在#import语句下)

@接口TimerClass:NSObject

/*类方法,因此“+”符号*/+(void)调用函数

@结束

然后

@实现时间类

.+(无效)计时器响应:(n计时器*)计时器 {

//调用您的命令行工具

}

在main函数中,调用NSTimer并使其具有1的时间间隔和类TimerClass的调用timerRespond


这应该可以正常工作(可能会有一些错误,因为我没有使用Xcode进行检查)。告诉我它是否有效。祝你好运

我想了想,那是一个好办法吗?只需循环一个sleep命令,直到进程终止?也许我只是花了太久的时间在这上面,忘记了简单的解决方案。如何用对main之外的另一个函数的调用替换printf语句,以及将该函数放在何处?在main()的正下方?不知道语法,也不知道该去哪里看——这感觉更像是C编程,而不是OO编程,这很好,但我从大学起就没做过!您使用的是Objective-C,因此创建一个对象,将其头导入
main.m
并使用
[[YourObject alloc]init]
main()
中实例化它。然后,您可以像在任何Cocoa应用程序中一样使用它。确保您有一个自动释放池,或者如果希望对该工具进行垃圾收集,您已经调用了
objc\u startCollectorThread()