【发布时间】:2015-05-20 06:58:25
【问题描述】:
我刚刚开始使用 Apple Watch。我从“Five Minute Watchkit”中找到了关于让 iOS 应用程序和 watch kit 应用程序都在模拟器中运行并且两个进程都附加到 LLDB 调试器的说明。
我要做的是启动并退出 iOS 应用程序以在 sim 卡中安装当前版本。然后我切换到 watchKit 方案并启动它,它会在手表模拟器上显示我的手表应用程序 UI。
然后我在模拟器中启动相应的 iOS 应用程序,然后用户在 Xcode 菜单中“附加到进程”以将调试器附加到正在运行的 iOS 应用程序。
这行得通。我可以在手表套件 InterfaceController 或我的 iOS 应用程序中设置断点,并且调试器会在应该的时候中断。
但是,我在 iOS 应用程序的调试控制台中没有看到 NSLog() 语句。 (我确实看到了来自 WatchKit 扩展代码的日志语句。)如果我在我的 iOS 应用程序中设置了一个断点,它会在应该的时候停止在那个断点处。我认为 NSLog 缺少控制台输出与附加到 sim 上正在运行的进程有关,而不是从 Xcode 启动它,但我不知道那是什么。
(顺便说一句,将操作附加到从断点调用 NSLog 的断点也不会显示,但会显示“日志消息”调试器命令。 有人有什么见解吗?)
编辑: iOS 应用程序中的代码似乎无关紧要。就我而言,这是一个简单的 IBAction,它附加到 iOS 应用故事板中的一个按钮:
- (IBAction)buttonAction:(UIButton *)sender;
{
NSLog(@"Button clicked on iPhone");
}
我可以在那个 NSLog 语句上设置一个断点。调试器在该行停止,但我在调试控制台中看不到日志语句。
【问题讨论】:
-
你确定编译器能做到这一点吗?哦,请显示一些代码,这会很有帮助
-
Linus,我很乐观。调试器在包含 NSLog 的行处中断。只是日志语句没有显示到控制台。
-
第三次,调试器在相关行的断点处停止。我绝对 100% 确定连接是正确的。如果我在 Xcode 中使用 ⌘R 启动 iOS 应用程序,则日志语句有效。只有当我在 sim 中运行应用程序然后附加到正在运行的进程时,我的 NSLog 语句才无法显示。
-
将 IBAction 的参数类型更改为 id 是在对问题挥舞着死鸡,甚至不值得尝试。
标签: ios objective-c xcode apple-watch