Where does a cocoa app main() function go?
我正在尝试构建一个超级简单的Cocoa应用程序,该应用程序基本上具有一个带有while循环的功能(例如main())。它会执行一些操作,执行卷曲请求,然后等待几秒钟,然后重新开始。
我已经用所有必需的变量和函数在XCode中设置了所有项目,但是我不知道将main()函数放在哪里可以完成所有工作。
我在哪里定义主要功能?
可可非常面向事件驱动的编程。为此,main()函数通常只启动主运行循环,然后应用程序委托可以启动它想做的任何事情。也就是说,编写使用main()进行非复杂事件的非事件可可程序当然是可能的。在这种情况下,它的工作原理与C.
基本相同。
"充满爱的可可"刚刚发表了一篇有关极简主义可可编程的文章,这可能会引起人们的兴趣。它使用main()做一些工作。我实际上不建议您在自己的应用程序中模拟它,但是肯定有可能。
如果您按照通常的Cocoa架构设计应用程序,则实际上不会在自己的主代码中放置任何代码。整个应用程序应该是事件驱动的(事件是诸如来自用户的UI交互,网络事件等)。
也就是说,有一个主要功能。如果您已在XCode中创建了默认的Cocoa项目,则主函数将位于名为" main.m"的文件中。它将像C中的主要功能一样运行。您将看到那里有一个对NSApplicationMain()的调用。这就是启动Cocoa应用程序运行的过程(创建应用程序,加载主nib文件,开始运行主运行循环等)。 NSApplicationMain()直到应用程序退出后才返回,因此,如果您真的想将内容放入main()中,则需要将其放在对NSApplicationMain()的调用之上。
同样,这不是正常的"可可方式",但是如果没有更多关于您想做什么的信息,很难为您提供更多建议。
正如其他人回答的那样,可以按照建议的方式来实现您想做的事情,即通过在
但是,这不是编写Cocoa应用程序的最佳方法,该应用程序会在几秒钟内重新加载一次URL。在不同的环境中,有不同的标准方式来做事。因此,有时您需要取消学习已习惯的知识。您可能已经想到:我想做
最可可的方式是这样:
在应用程序委托中,实现
1 2 3 4 5 6 7 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { NSTimer*timer=[NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; } |
这将创建一个计时器,该计时器每五秒钟触发一次,每次触发时,它将调用由
实施
1 2 3 4 | - (void)timerFired:(NSTimer*)theTimer{ // do whatever you want. you can use plain C to invoke curl, // or if you want you can use Cocoa methods to access a URL. } |
没有第四步!
要添加到Andrew Madsen的答案中,最好的做法是从Xcode项目模板开始。它会为您设置一个骨骼main(),XIB,plist和其他标准可可材料。