我已经编写了一个Objective C运行时调试工具(在Swift中)来帮助我开发另一个应用程序。目前,这个工具是一个独立的Cocoa应用程序,可以通过它自己的Objective C运行时实例正常启动,因此它没什么用处。
我想修改它,以便可以从目标应用程序中的方法调用打开它,以便使用目标应用程序的运行时。此要求排除了使用我发现的依赖NSTask
开始全新流程的解决方案。
我怎样才能做到这一点?
编辑:
我的调试工具是一个GUI应用程序。通常情况下,它会通过NSAppliationMain
函数调用main
来启动。这将从主捆绑包的info.plist
文件中设置应用程序实例。显然,当尝试从另一个应用程序的代码中调用NSApplicationMain
时,这不会起作用,因为主包的info.plist
是目标应用程序的{{1}},而不是调试的应用程序
所以解释一下:如何从主nib文件手动启动我的应用程序,从目标应用程序中打开它的窗口,菜单栏等?
答案 0 :(得分:1)
最后一次猜测(在评论之后)和粗略轮廓:
第1步:从自己的NIB加载Windows
Windows不需要在主NIB启动时加载,有些方法可以根据需要以编程方式加载它们。例如。查看NSWindowController
(加载单个窗口)和NSBundle
(加载完整的NIB)。
步骤1B:动态添加菜单/菜单项
如果您希望为代码提供菜单项,则可以通过编程方式添加这些项,而不是在主NIB中预先定义它们。您也可以像使用Windows一样从NIB加载整个菜单。
第2步:编写API以启动&控制你的调试器
这是客户端将调用的API。修改调试器应用程序的启动以调用此API进行测试。
第3步:将项目转换为框架。
框架将包含代码和NIB。
步骤4:在另一个应用中使用框架,调用API。
HTH