我是 mac os X 开发的新手,我下载了一个开源 mac 应用程序,但是我无法理解 cocoa program.so 的执行流程,任何人都可以简单地解释一般 cocoa 程序的程序流程。
提前致谢
从main开始。它不太可能包含任何有趣的东西,但值得检查以防万一。最有可能的是,它只包含对NSApplicationMain的调用,它将创建 NSApplication 对象并向其发送run消息。这就是应用程序运行的原因,这个方法将在剩下的剩余流程中运行。
main
NSApplicationMain
run
然后查看 MainMenu 笔尖。加载这是应用程序将要做的第一件事。这里设置为“发射时可见”的任何窗口都会立即出现;更重要的是,应用程序代表可能会在这里。检查应用程序或文件所有者(应用程序是它们都在这个笔尖中,因此您需要检查两者)delegate outlet,如果其中一个已连接,请按照连接进行操作。查看该对象是哪个类的实例。
delegate
找到应用程序委托类后,在 Xcode 中打开它。查看应用程序委托方法列表并查找实现了哪些,并阅读那些。在开始这个过程中,application:…FinishLaunching:双胞胎将特别重要。
application:…FinishLaunching:
从那里开始,只需阅读代码,了解它的作用,并将它带到你需要的地方。
彼得的答案很好 - 我还要说检查'awakeFromNib'的实现,特别是对于从 MainMenu.nib 加载的对象。你经常会在这种方法中找到有趣的东西,无论是对还是错。
2 回答
从
main
开始。它不太可能包含任何有趣的东西,但值得检查以防万一。最有可能的是,它只包含对NSApplicationMain
的调用,它将创建 NSApplication 对象并向其发送run
消息。这就是应用程序运行的原因,这个方法将在剩下的剩余流程中运行。然后查看 MainMenu 笔尖。加载这是应用程序将要做的第一件事。这里设置为“发射时可见”的任何窗口都会立即出现;更重要的是,应用程序代表可能会在这里。检查应用程序或文件所有者(应用程序是它们都在这个笔尖中,因此您需要检查两者)
delegate
outlet,如果其中一个已连接,请按照连接进行操作。查看该对象是哪个类的实例。找到应用程序委托类后,在 Xcode 中打开它。查看应用程序委托方法列表并查找实现了哪些,并阅读那些。在开始这个过程中,
application:…FinishLaunching:
双胞胎将特别重要。从那里开始,只需阅读代码,了解它的作用,并将它带到你需要的地方。
彼得的答案很好 - 我还要说检查'awakeFromNib'的实现,特别是对于从 MainMenu.nib 加载的对象。你经常会在这种方法中找到有趣的东西,无论是对还是错。