在钢琴应用程序中,我分配黑键的坐标。
这是导致错误的代码行。
'blackKey' 和 'whiteKey' 都是自定义视图
blackKey.center.x = (whiteKey.frame.origin.x + whiteKey.frame.size.width);
其他答案并没有完全解释这里发生的事情,所以这是基本问题:
当你写的时候blackKey.center.x
, the blackKey.center
and center.x
两者看起来都像结构成员访问,但实际上是完全不同的东西。blackKey.center
是一个属性访问,它脱糖为类似的东西[blackKey center]
,这反过来又脱糖为类似的东西objc_msgSend(blackKey, @selector(center))
。您无法修改函数的返回值,例如objc_msgSend(blackKey, @selector(center)).x = 2
— 它只是没有意义,因为返回值不是stored任何有意义的地方。
因此,如果要修改结构体,则必须将属性的返回值存储在变量中,修改变量,然后将属性设置为新值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)