【问题标题】:Can I prevent XCode 4 from stepping into synthesized properties?我可以阻止 XCode 4 进入合成属性吗?
【发布时间】:2011-11-01 16:41:30
【问题描述】:

如果我想单步执行一个正在传递合成属性的方法,我首先必须单步执行这些属性中的每一个。有没有办法告诉 XCode 忽略它们?

【问题讨论】:

  • 我认为这是不可能的,因为综合属性只是充当默认的 getter。我确实相信,但是您只需按两次即可。虽然不是一个解决方案,但它有点快。
  • 我假设您的意思是,即使您已经合成了属性,您仍然必须有一个客户获取器。对吗?
  • 不 - 没有自定义 getter。事实上,现在我什至没有@synthesize 行;都是自动合成的。但是 XCode 仍然会进进出出。
  • 这很奇怪。 XCode 不会对我这样做。你按什么热键继续?
  • 如果它是自动合成的,它在哪里进出?到头文件定义?

标签: objective-c debugging xcode4


【解决方案1】:

我认为不可能:属性是 MERE 胶水代码,因此编译器会看到并编译实际的胶水代码/宏扩展,因此在二进制代码中有这些调用,调试器将单步执行这些二进制代码.

更准确地说,每个 self.XY 都是“调用”到 asm 中的另一个函数..

在模拟器中我们可以看到:

0x7853:  movl   -16(%ebp), %eax
0x7856:  movl   -24(%ebp), %ecx
0x7859:  movl   -48(%ebp), %edx
0x785c:  movl   92138(%edx), %esi
0x7862:  movl   %eax, (%esp)
0x7865:  movl   %esi, 4(%esp)
0x7869:  movl   %ecx, 8(%esp)
0x786d:  calll  0x15ed2                   ; symbol stub for: objc_msgSend

这是一个 self.XY 代码。

【讨论】:

  • XCode 也有调试符号 - 它们中是否有任何帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2011-06-30
  • 2011-09-07
  • 2013-02-23
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多