8

NSApplicationMain的文档中,它说:

创建应用程序,从应用程序的主包中加载主 nib 文件,然后运行应用程序。您必须从应用程序的主线程调用此函数 [...]。

“主线程”显然是指程序的第一个线程,从哪里main(argc, argv)开始。快速浏览NSThread文档会发现+ (BOOL)isMainThread,它可用于确定当前线程是否是“主”线程。我进行了一些测试:无论是否NSApplicationMain已调用,此方法都有效。

我的问题有两个(有些相关)部分:

  1. 主线程有什么特别之处NSApplicationMain
  2. Cocoa 首先是如何识别主线程的?
4

1 回答 1

7

是通过重新实现函数来学习 NSApplicationMain 的好地方。NSApplicationMain 必须从主线程调用,主要是因为

  1. 它处理主接口
  2. UI 元素(在多个系统中,而不仅仅是 OS X)都需要在同一个线程中调用才能正常工作。
  3. Cocoa 框架中提供的图形元素假定它们将在主线程中运行。

差不多了,由于 Cocoa 在主线程中调用事物,并且 UI 都需要在同一个线程中运行,因此您需要在主线程中处理任何与 UI 相关的事情,包括 NSApplicationMain。

于 2011-09-15T21:02:05.097 回答