![]() |
1
40
这里使用了两种不同的点语法。它们看起来是一样的,但是它们做不同的事情,这取决于它们在做什么和在做什么:
在您的单行顶部示例中,您得到一个rect的副本并设置它
|
![]() |
2
17
这不起作用的原因是两种语法的混合。
然后有“.”作为直接结构成员访问(纯C)。所以
在这样一个设定值的情况下组合它是行不通的。
您试图设置一个结构的结构变量,这是可以的,但没有从uiview指向该结构的指针,因此它被复制。所以你复制,然后设置,然后你期望设置操作通过最初的GET以某种方式转发到uiview,但是这不起作用。 当然,你可能会想,为什么苹果公司没有创建一个快捷方式,这样最终你复制的帧会自动地重新注入到一个自动附加的setframe调用中,我猜你只需要按照它的方式生活。
所以记住,如果你得到一个指向框架的指针,它会工作,但是你没有,你会得到一个复制的结构。
同样想象一下,如果你得到一个指向CGRECT框架的直接指针,并且你通过这个指针改变了一些东西,那么uiview怎么知道它的大小已经改变了,它必须自己更新呢?另一方面,如果进行了一个[MyView setFrame:NewFrame]调用,那么uiView可以自行进行所有必要的重新调整。 |
![]() |
3
2
一
编辑:正如已经指出的,分配将是结构的一个副本。 |
![]() |
4
1
当您直接操作数据时,不会调用访问器,因此UI不能更新自身,也不能通知任何其他想要了解更改的组件。 编辑:正如Walkytalky所指出的,您将得到数据的副本,因此更改它对原始数据没有任何影响。下面的示例将显示这一点:
|
![]() |
Martin sku · 在目标C中打印时间 2 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 2 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 6 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 6 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 6 年前 |