带有GUI的Cocoa应用程序中的入口点/控制流是什么?

时间:2012-01-21 03:45:24

标签: objective-c macos cocoa events user-interface

在控制台应用程序中,通常会有一个主文件,您可以在其中键入您希望程序执行的操作。在事件驱动的GUI程序中,您有每个函数的事件处理程序(例如在Visual C#Windows窗体中)。

在Cocoa GUI应用程序中,我没有看到可以创建变量和运行命令的集中位置。例如,我可以创建一个新类并定义其所有成员函数和数据,但我没有地方实际创建该类的新对象。我在哪里放置“实际程序”?我找不到一个文件,程序的所有部分都放在一起,我似乎只能定义类。存在一个主文件和函数,但它们不应该被使用 - main()只是启动应用程序。

这是如何工作的?我在哪里放我的程序代码?

2 个答案:

答案 0 :(得分:5)

Cocoa是一个事件驱动的环境,在很多方面都像.NET一样。在绝大多数情况下,系统会打电话给你而不是你打电话给你。因此,就像你使用C#一样,你将会进入各个地方并等到你被召唤为止。

有两个主要的地方你要把你的创业“事情”。首先是Storyboard或主nib文件(故事板是iOS 5中的新功能)。在程序启动时,将自动创建在主nib文件(或Storyboard)中创建的任何对象。然后,他们可以回复awakeFromNibviewDidLoad等方法。

另一个重要的地方是申请代表。这不是所有程序的主页,但它通常是运行的第一段“你的”代码。特别是,您希望将启动代码添加到applicationDidFinishLaunching:withOptions:

在继续之前,我建议您花一些时间在iOS Starting Point文档中。如果您想稍微跳过一点,可以转到iOS App Programming Guide。 (我假设你问的是iOS,因为大多数人都这么做。如果你想要Mac,它就非常相似。从Your First Mac App开始。)

一旦你对某些事情有所了解,Apple的文档就会非常好。而且Cocoa非常一致(再次,一旦你对的一致性有所了解)。请务必阅读标有“编程指南”的文档,而不仅仅是参考文档。当您阅读参考文档时,请务必阅读顶部的段落。如果你只是跳到所有的方法解释,你将跳过大部分有用的信息。

答案 1 :(得分:1)

通常,项目中有一个main.m文件。

Xcode为iOS App生成的默认值:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([MPAppDelegate class]));
    }
}