- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有人可以向我解释一下(似乎是)一个额外变量的重要性,以及为什么要在一个与上一个名字相同的新变量之前加一个下划线。
我已经读到它与创建实例变量有关,但是为什么要创建一个UI元素作为实例变量呢?您能提供一个用例吗?
此 objective-c 代码用于iOS开发。
谢谢。
最佳答案
当您对属性进行@synthesize
时,如果不提供自己的getter和setter方法(在这种情况下,无需@synthesize
),则始终会创建一个新的实例变量。默认情况下,它的名称与属性相同。因此,@synthesize slider;
在幕后创建了一个名为slider
的实例变量。
这里的问题是,当您真正打算使用slider = xxx
时,您可能会错误地键入self.slider = xxx
。当您将某个属性设为属性时,最佳做法是您应该始终通过self.propertyName
访问它(除了init和dealloc方法以及任何自定义的getter和setter方法中)。
因此,为了避免这种情况,使用@synthesize
语句将支持ivar重命名为更难以与该属性混淆的内容。如果现在使用slider
而不是self.slider
,则编译器将给出错误消息,因为ojit_code不再是实例变量的名称。
关于ios - 调用“@synthesize slider = _slider;”有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724249/
有人可以向我解释一下(似乎是)一个额外变量的重要性,以及为什么要在一个与上一个名字相同的新变量之前加一个下划线。 我已经读到它与创建实例变量有关,但是为什么要创建一个UI元素作为实例变量呢?您能提供一
我是一名优秀的程序员,十分优秀!