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