首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调试@property /ivar值

调试@property /ivar值
EN

Stack Overflow用户
提问于 2012-03-05 18:24:58
回答 2查看 254关注 0票数 1

如果在@interface中将指针定义为@property和实例变量,是否会生成同一变量的两个版本?你应该做一个还是做另一个?

我试图以编程方式创建一个UIImageView并将其显示在UIWindow的一个新实例中,并且我正在使用调试器检查这些值,以了解它不工作的原因。

如果我只是将UIWindow *定义为@property而不是ivar,那么它不会出现在调试器数据窗口中,但是printf给出的值是0x6D4CD00。如果我将它定义为@property和ivar,那么我可以在调试器中看到它,但它是0x0,而printf仍然是0x6D4CD00。它们是两个不同的变量吗?为什么在调试器中看不到@property?(iPhone模拟器)+ (ARC=on)

EN

回答 2

Stack Overflow用户

发布于 2012-03-05 18:35:18

使用关键字@property声明属性不会创建任何实例变量。它是将属性连接到变量的@synthesize指令。

实例变量的名称是通过@synthesize foo = _foo表示法显式指定的,或者默认情况下是属性的名称本身。

@synthesize指令可以将显式声明的实例变量连接到属性,或者,如果没有带有属性标识符的变量,则隐式创建一个。

通常没有理由显式声明实例变量。

票数 2
EN

Stack Overflow用户

发布于 2012-03-05 21:15:02

同意@nikolai-ruhe的观点,即没有代码理由显式声明实例变量,但在调试器中立即访问(通过降速self)来查看这些变量的内容可能会很有帮助。不过,这完全是一个观点问题;你也可以用po [self valueForKey:@"variableName"]进行自我反省。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9565038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档