你如何看待或评估xcode中的表达式,如visual studio的即时窗口?

use*_*951 16 debugging xcode objective-c

在MS visual studio中,我们只需右键单击添加手表.

如何在xcode中执行此操作?

小智 25

使用po"调试"区域中的命令

在相关的代码区域设置断点,然后当程序在断点处停止时,在调试区域的控制台中输入命令.相关命令是po(打印对象),后跟要评估的表达式.

如果调试窗口在XCode中不可见,您可以通过顶部菜单显示它:

'View' -> 'Debug Area' -> 'Activate Console'(XCode v8.x)

要评估表达式,例如var1/var2where var1var2are都是双精度表,请在控制台中输入以下内容:

po var1/var2
Run Code Online (Sandbox Code Playgroud)

控制台将返回如下内容:

(double) $2 = 3.085 [no Objective-C description available]
Run Code Online (Sandbox Code Playgroud)

显示对象属性

您还可以在该断点处返回当前在代码中使用的对象的特定属性:

po [bankInfo city]
Run Code Online (Sandbox Code Playgroud)

它将返回如下内容:

(id) $4 = 0x000069e8 Testville
Run Code Online (Sandbox Code Playgroud)

请注意,虽然控制台似乎不喜欢点符号,但在适用时更喜欢方括号.例如,这会为我返回一个错误:

po bankInfo.city
Run Code Online (Sandbox Code Playgroud)

我希望这是你一直在寻找的东西.


gid*_*eon 11

Gabe的答案几乎就在那里,但缺少一个关键细节:选择调试器输出.默认情况下,底部选项设置为"目标输出",因此该po命令不会显示任何内容.

这是我正在调试的教程中的三明治应用程序:

xval中的eval表达式截图

作为一个xcode新手,来自MS Visual Studio背景,我想要OP正在寻找的东西.在阅读Gabe的答案时,我选择Debugger Output并得到了我想要的东西.


Ara*_*han 1

我的前辈告诉我使用 NSLog(@variable).........

  • OP 要求提供一种在遇到断点时查看表达式和变量的方法。我确切地知道他在说什么,因为我已经使用 Visual Studio 很长时间了,并且有一个即时窗口,它允许您像在 REPL 控制台中一样在上下文中使用当前堆栈帧进行编码。因此,您可以在其中看到变量值等**基于断点所在的位置**。放置日志记录调用虽然有用,但并不是很好,您正在更改代码,并且需要记住在完成后将其删除。 (2认同)