Man*_*nni 99 iphone debugging xcode objective-c ios
我在UITableViewController中的代码:
delegate.myData = [myData objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
我怎样才能看到的值delegate.myData或indexPath.row在调试?delegate.myData应该是一个数组和indexPath.row一个int.我只能看到物体的内存地址delegate,并indexPath在哪儿呢?myData和row?

And*_*riy 136
检查如何在Xcode调试器中查看NSDictionary变量的内容?
我也用
po variableName
print variableName
Run Code Online (Sandbox Code Playgroud)
在控制台中.
在您的情况下,可以执行
print [myData objectAtIndex:indexPath.row]
Run Code Online (Sandbox Code Playgroud)
要么
po [myData objectAtIndex:indexPath.row]
Run Code Online (Sandbox Code Playgroud)
小智 22
我同意其他海报,Xcode作为一个开发环境应该包含一个简单的方法来调试变量.嗯,好消息,有一个!
在搜索并没有找到关于如何在Xcode中调试变量的简单答案/教程之后,我去探索了Xcode本身并发现这(至少对我而言)非常有用的发现.
在Xcode的主屏幕中,确保通过单击屏幕截图中显示的右上角按钮来查看底部的调试区域.


现在设置一个断点 - 代码中您希望程序暂停的行,方法是单击代码区域的边框.

现在在Debug Area中查找这个按钮并单击中间的按钮.您会注意到您的区域现在分成两部分.


现在运行您的应用程序
在程序执行期间到达第一个断点时,您将在左侧看到该断点处可用的所有变量.

您可以展开变量上的左箭头以获得更多细节.甚至可以使用搜索字段来隔离您想要的变量,并在"进入"断点范围时实时更改它.

在调试区域的右侧,您可以使用鼠标右键单击所需变量,发送以根据需要打印变量.

如您所见,该上下文菜单中充满了非常有趣的调试选项.比如Watch已经建议使用类型命令甚至编辑值...它会改变变量的运行时值!
Lig*_*Man 19
你也可以:
恕我直言有点隐藏和繁琐......
小智 9
您的困惑源于声明的属性不是(必须命名为相同)(实例)变量的事实.
表达
indexPath.row
Run Code Online (Sandbox Code Playgroud)
相当于
[indexPath row]
Run Code Online (Sandbox Code Playgroud)
和任务
delegate.myData = [myData objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
相当于
[delegate setMyData:[myData objectAtIndex:[indexPath row]]];
Run Code Online (Sandbox Code Playgroud)
假设合成属性的标准命名.
此外,delegate可能被声明为类型id<SomeProtocol>,即,编译器此时无法提供实际类型信息delegate,并且调试器依赖于编译时提供的信息.由于id是泛型类型,因此没有关于实例变量的编译时信息delegate.
这些是您没有看到myData或row作为变量的原因.
如果你想检查发送的结果-row或者-myData,你可以使用命令p或po:
p (NSInteger)[indexPath row]
po [delegate myData]
Run Code Online (Sandbox Code Playgroud)
或使用表达式窗口(例如,如果您知道您delegate的实际类型MyClass *,您可以添加表达式(MyClass *)delegate,或右键单击delegate,选择View Value as…并键入实际类型delegate(例如MyClass *).
话虽这么说,我同意调试器可能会更有帮助:
可以选择告诉调试器窗口使用运行时类型信息而不是编译时信息.它会减慢调试器的速度,但会提供有用的信息;
声明的属性可以显示在名为properties的组中,并允许(可选)直接在调试器窗口中进行检查.这也会减慢调试器的速度,因为需要发送消息/执行方法以获取信息,但也会提供有用的信息.
您可以在运行时将值打印到控制台窗口.以下是步骤:

| 归档时间: |
|
| 查看次数: |
121451 次 |
| 最近记录: |