iphone - 在没有支持变量的情况下在 Xcode 调试器中查看合成属性的值

标签 iphone objective-c properties modern-runtime

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


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

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

最佳答案

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

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

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

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

  • 您已在对象内的某个断点处停止
  • 变量 View 显示 self 的指针地址为(比方说)0x1031380
  • 在控制台输入po [0x1031380 title](注意没有分号)然后输入
  • 您应该会在控制台中看到您想要的内容。

当您使用 (retain) 声明一个属性并随后合成该属性时,您正在创建保留传递给它们的对象/值的 setter。所以在你上面的例子中,你应该将方法重写为:

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

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

关于iphone - 在没有支持变量的情况下在 Xcode 调试器中查看合成属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3270248/

相关文章:

javascript手指滑动检测

iphone - 带有旋转动画的 CALayer

ios - 如何比较 Objective-c 中的各种 NSArray?

iphone - 在 Route-Me 中使用离线数据库

java - 将 java 属性传递给 scala - nosuchmethod 错误

ios - 在应用程序购买中添加二进制文件

iphone - 如何在 sqlite 中创建时间戳字段,以便正确初始化具有 NSDate 字段的核心数据对象?

python - 如何创建一个返回类本身实例的静态类属性?

iphone - 实现数据库同步的最佳方法是什么?

Java "resource"-文件夹有时会自行更改为常用文件夹?