在特定时间运行Mac应用程序方法涉及哪些步骤?

时间:2013-08-23 15:54:12

标签: objective-c cocoa scheduled-tasks launch

我一直在研究launchd和launchctl,但是看不到前者是如何用于一次性任务的。

假设此应用程序的用户输入了将来要运行的任务的一些详细信息。 (他们可以在不同的时间添加几个。)如果使用启动,我假设应用程序将创建并保存一个plist然后加载它。 plist的ProgramArguments可以包含任务的具体细节(可能会在将来的运行中发生变化)。该应用程序需要每次加载一个?应用程序是否需要清理(删除)已完成的plist?

日历似乎是另一种选择,但是使用警报>开放式程序功能似乎有问题。

还有另一种选择吗? Cocoa内置的东西可能吗?

所有想法都非常感激。

1 个答案:

答案 0 :(得分:2)

似乎有多种方法可以完成这个“后做”任务。我的目标是使用Objective-C和Cocoa作为解决方案。最初,我担心以某种方式'阻塞'主线程。事实证明NSTimer 一个 问题的答案。我最终使用了:

NSTimer *timer = [[NSTimer alloc] initWithFireDate:date
                                          interval:0.1
                                            target:self
                                          selector:@selector(startSomeMethod:)
                                          userInfo:info
                                           repeats:NO];

稍后“解雇”任务。