gpt4 book ai didi

objective-c - myView.frame.origin.x = 值;不起作用 - 但为什么呢?

转载 作者:太空狗 更新时间:2023-10-30 03:09:15 25 4
gpt4 key购买 nike

我知道我不能使用这个:

myView.frame.origin.x = 25.0;

而且我必须改用它:

CGRect myFrame = myView.frame;
myFrame.origin.x = 25.0;
myView.frame = myFrame;

我一直在这样做,但我不知道为什么我必须那样做。我想填补我理解中的空白。有人可以解释吗?

现在 Xcode 给你“表达式不可分配”。前段时间您遇到编译错误“需要左值作为赋值的左操作数”。

最佳答案

这里使用了两种不同的点语法。它们看起来一样,但它们做的事情不同,这取决于它们在什么上操作以及用它做什么:

  • 第一个 myView.frame[myView frame] 的简写,一个返回 CGRect 结构的方法调用 值(value)
  • myFrame.origin.x 正在以传统 C 方式访问普通结构成员。
  • 第二个 myView.frame 也是一个速记,但是因为该语句是一个赋值,所以它转换为调用不同的方法,[myView setFrame:myFrame ].

在您的单行顶部示例中,您获得了矩形的副本并设置了它的 x,但永远不会将其复制回 View 。您必须明确区分方法调用,点语法糖不能将它们变幻成单个调用。

关于objective-c - myView.frame.origin.x = 值;不起作用 - 但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2983832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com