10

我最近才开始在我的 iPhone 项目中使用合成实例变量。问题是,我在调试器中看不到合成的 ivars。当不使用显式声明的实例变量时,有什么方法可以在调试器中查看对象的属性?


我需要澄清第二个问题。我不是在问如何访问属性,或者它们做什么;我知道所有这些东西。我的印象是,在使用基于这篇文章的合成 ivars 时,您无法直接访问实例变量。我显然已经能够做我以前认为不可能的事情。我想知道发生了什么事。

我正在使用 Xcode 3.2.4/iPhone 模拟器/LLVM 编译器 1.5。

4

3 回答 3

9

编辑为第二部分添加答案:

这适用于 Xcode 3.1,所以我不明白为什么它不适用于更高版本

您可以做的是在调试时直接从控制台向对象发送消息。

大概您已经在断点处停止并且您正在查看调试视图中的变量。对于对象,这些向您显示指针。您可能看不到 iVar,但您有指向该对象的指针,您可以向它发送消息。例如:

  • 您已在对象内的某个断点处停止
  • self变量视图显示了to be (say)的指针地址0x1031380
  • 在控制台输入po [0x1031380 title](注意没有分号)并输入
  • 您应该在控制台中看到您想要的内容。

当您声明一个属性(retain)并随后合成该属性时,您正在创建保留传递给它们的对象/值的设置器。因此,在上述情况下,您应该将方法重写为:

- (void)viewDidLoad {
    self.title = @"woah";
}

并且字符串将作为 setter 的一部分保留。此外,我更喜欢(copy)用于具有可变/不可变对(NSStringNSSetNSArray等)的类集群。这样,就不能从外部更改该属性。

于 2010-07-17T04:46:00.130 回答
5

您不必使用变量的指针/地址。相反,您可以像这样使用变量名称:

po [myVar title]

如果变量在范围内,xcode 将帮助您键入变量名称(上面的 myVar)。

于 2012-02-29T05:50:07.273 回答
0

如果您不想手动输入po [blahblah],您可以执行 xnav 建议操作,您可以在标题中显式声明实例变量,或者“在调试变量区域中右键单击 'self' 并选择“添加表达式”,然后输入例如'_wordLength'和ivar将显示“

于 2012-08-02T21:40:39.147 回答