我正在编写一个可以通过自定义网址启动的iPhone应用。所以,我覆盖 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
要测试我的更改,我必须在模拟器中运行应用程序,然后退出并启动Safari。然后,我在地址栏中输入我的自定义URL以启动应用程序。
但每次启动时,应用程序都会崩溃。我试图找出原因,但是当我设置断点并从主屏幕(而不是在XCode)启动应用程序时,它似乎没有附加。
我甚至尝试将NSLog语句放在handleOpenURL消息中,但它们不会打印到控制台。
我想我可以创建UIAlertViews但是......是的,哎呀。在Simulator中连接到调试会话的任何其他方式吗?
答案 0 :(得分:14)
在Xcode 4中,您可以编辑目标的方案,在“运行”部分的“信息”选项卡中,您可以选择“等待MyApp.app启动”选项:
这将导致调试器等到下次启动应用程序,然后附加到该进程,而不是为您创建新进程。这样您就可以从Safari手动启动应用程序并使用调试程序。
答案 1 :(得分:7)
打开Console.app(在Utilities文件夹中)。您的日志消息应该出现在那里。
答案 2 :(得分:1)
你能编写一个能够运用你的AppDelegate功能的单元测试吗?
答案 3 :(得分:1)
我没有尝试过这个,但如何在代码中添加内联断点指令:
#if TARGET_CPU_ARM == 1
#define breakpoint() __asm__ volatile ("bkpt 0")
#else // !ARM - assume INTEL. Everything else will break
#define breakpoint() __asm__ volatile ("int3");
#endif
答案 4 :(得分:1)
在hadleOpenURL中添加以下内容作为第一行:
[NSThread sleepForTimeInterval:30.0] 然后将断点放在下一行之后。
调用应用程序后,您将有30秒的时间进入XCode并从菜单中选择:运行/“附加到进程”并从列表中选择您的应用程序名称。 调试器应该在断点处停止。
完成后不要忘记删除sleepForTimeInterval!