在一个钢琴应用程序中,我分配黑键的坐标.

"blackKey"和"whiteKey"都是自定义视图

blackKey.center.x = (whiteKey.frame.origin.x + whiteKey.frame.size.width);

推荐答案

其他答案并不能确切解释这里发生了什么,所以这是一个基本问题:

当你写blackKey.center.x时,blackKey.centercenter.x看起来都像是 struct 成员访问,但实际上它们是完全不同的东西.blackKey.center是一个属性访问,它可以访问[blackKey center],然后再访问objc_msgSend(blackKey, @selector(center)).你不能修改函数的返回值,比如objc_msgSend(blackKey, @selector(center)).x = 2——它就是没有意义,因为返回值没有意义.

因此,如果要修改 struct ,必须将属性的返回值存储在变量中,修改变量,然后将属性设置为新值.

Objective-c相关问答推荐

如何限制 UITextField 中的特殊字符(点和下划线除外)?

CoreData:错误:无法在 NSManagedObject 类上调用指定的初始化程序

Objective-C:在字符串中查找数字

保存 UIImage,以错误的方向加载它

表达式不可分配 - 将浮点数分配为 Xcode 中其他两个浮点数的总和时出现问题?

使用 UIScrollView 用两根手指滚动

带有 IB_DESIGNABLE 的 UIButton 会引发运行时属性警告,并且不会在 Interface Builder 中呈现

NSFileManager 唯一的文件名

来自 NSString 的 NSJSONSerialization

如何获取 iPhone 的当前方向?

改变 setContentOffset:animated: 的速度?

UITextField 中的文本在编辑后向上移动(编辑时居中)

Objective-C 中的 const 与静态 NSStrings

iOS:使用设备修饰符加载 xib 文件?

iOS 7 - 键盘动画

如何在 Objective-C 中创建静态方法?

从昨天开始无法将存档上传到应用store

ios 11 UITabBar UITabBarItem 定位问题

如何在 Cocoa 中获取 NSArray 的第一个 x 元素?

UITableView ,重新加载时滚动到底部?