【发布时间】:2010-12-13 19:33:33
【问题描述】:
我有一个 UIController,众所周知,UIController 与一个视图相关联,您可以使用合成的 getter 和 setter 方法访问它
UIController controller = init code ..
..
controller.view -> 这给了我我的 UIView 对象,它保留并自动释放,这将是合成的 get 方法(如果我对合成的 getmethod 的理解是正确的)
controller.view.frame -> this gives me my CGRect struct
controller.view.frame.size -> CGSize struct
为什么我不能直接给这个框架结构赋值
controller.view.frame.size.width = 20;
对于上述语句,我收到此错误“需要左值作为赋值的左操作数”
这是一个普通的 c 点运算符,我认为它应该可以工作。如果我遗漏了什么,请赐教
【问题讨论】:
-
这个问题是我认为在 Objective-C 中不应该引入点语法的第一个原因。它会引起混乱,完全没有必要。
-
"这是一个普通的 c 点运算符" > 不,不是。接收运算符的前两件事是对象,而对象在 C 中不存在。因此,这个 不能 是“正常”的 C 点运算符。 (从技术上讲,前两件事是结构引用,这意味着您想使用箭头
->运算符,但随后您将深入研究直接和外部访问实例变量,这是非常糟糕的 )
标签: objective-c