这个问题不是“我该怎么做”,而是关于 Objective-C 中的某些类属性的“为什么会这样”。
我知道下面的两个示例是不允许的,并且会导致错误(“表达式不可分配”):
self.myUIView.frame.origin.x = 50;
self.myUIView.frame.origin = CGPointMake(50,50);
并且正确的方法是创建一个新的 CGRect,设置所需的值,然后分配它:
CGRect rect = self.myUIView.frame;
rect.origin = CGPointMake(50, 50);
self.myUIView.frame = rect;
我想了解这是为什么。
CGRect 是一个包含两个结构的结构。限制是否与结构的分配方式有关,以防止可能溢出该内存的分配?或者它更像是关于公共和私人财产的约定?
我意识到这似乎是一个小问题/基本问题,但我认为澄清对这些基本事物的模糊/错误理解很重要。