我刚刚开始在我的iPhone项目中使用合成实例变量。问题是,我无法在调试器中看到合成的ivars。当没有使用显式声明的实例变量时,有没有办法在调试器中查看对象的属性?
我需要澄清第二个问题。我不是在询问如何访问属性或他们做什么;我知道那些东西。我认为,当使用基于this post的合成ivars时,无法无法直接访问实例变量。我显然能够做到我以前认为不可能的事情。我想知道发生了什么。
我正在使用Xcode 3.2.4 / iPhone模拟器/ LLVM编译器1.5。
答案 0 :(得分:9)
已修改为第二部分添加答案:
这适用于Xcode 3.1,所以我不明白为什么它不适用于更高版本
您可以做的是在调试时从控制台直接向对象发送消息。
据推测,您已经在断点处停了下来,并且您正在查看调试视图中的变量。对于对象,这些显示指针。你可能看不到iVar,但你有指向对象的指针,你可以发送消息。例如:
self
的指针地址(比方说)0x1031380
。po [0x1031380 title]
中(请注意,没有分号)并输入当您使用(retain)
声明属性并随后合成属性时,您将创建保留传递给它们的对象/值的setter。因此,在您的情况下,您应该将方法重写为:
- (void)viewDidLoad {
self.title = @"woah";
}
字符串将作为setter的一部分保留。此外,我更喜欢将(copy)
用于具有可变/不可变对(NSString
,NSSet
,NSArray
等的类集群。这样,财产就无法在外部改变。
答案 1 :(得分:5)
您不必使用变量的指针/地址。相反,你可以像这样使用变量名:
po [myVar title]
如果变量在范围内,xcode将帮助您键入变量名称(上面的myVar)。
答案 2 :(得分:0)
如果您不想手动键入po [blahblah]
,您可以执行xnav建议的here,您可以在标题中明确声明实例变量,或者在调试变量区右侧点击'self'并选择“Add Expression”,然后输入eg' _wordLength'和ivar将显示“