这可能是一个非常愚蠢的初学者问题,但是:
如果您的类中有一些很好的实例变量,例如UIScrollview * scrollView2,那么为什么要通过放弃
来绕过getter和setter[self.scrollView2 addSubview:imageView];
,而不是做
[scrollView2 addSubview:imageView];
?我的意思是......越过吸气剂并没有伤害,实际上我认为这总是要走的路。但在所有Apple的例子中,我都错过了这种模式。他们在调用方法时很少使用self.someInstanceVariable。或者我弄错了什么?
我开始做同样的事情,因为苹果做到了,但我想知道:为什么?
答案 0 :(得分:3)
它与KVO (Key-Value Observing)和KVC (Key-Value Coding)有关。如果绕过getter或setter,则观察该值的对象将无法获取该消息。
答案 1 :(得分:2)
我曾经绕过getter / setter,直到我发现直接访问变量时绑定不起作用。换句话说,键值编码仅在使用getter / setter函数访问属性时才有效。
编辑:有关KVC合规性,请参阅this page。
答案 2 :(得分:1)
通常,您不会使用init
或dealloc
中的属性,因为您的对象可能不处于“安全”状态,所以最好直接访问实例变量。