gpt4 book ai didi

objective-c - 设置和使用 obj-c CGPoint、CGRect 和其他

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

围绕我认为的 obj-c 结构主题,我有三个问题

1) 为什么我经常(或总是)不能采用 CGPoint 或 CGRect 成员变量并逐个设置值?我发现我必须这样做:

CGPoint point;
point.x = someValue;
point.y = someOtherValue;
obj.myPoint = point;

而不是简单地 obj.myPoint.x = someValue 等

2) 这种行为在 obj-c 中的所有结构中都是一致的吗?

3) 有没有简单的方法可以添加两个 CGPoints?好像早就应该有了,就是没找到。我认为如果在将 dest var 设置为 temp var 之前必须使用临时 CGPoint 来累积两个 CGPoint 之间的值会很麻烦(因为不能只做 pointA.x += pointB.x ( y 也一样)。

最佳答案

1) 来自@sb 对 Cocoa Objective-c Property C structure assign fails 的回答

That won't accomplish anything, because [t member] returns a struct, which is an "r-value", ie. a value that's only valid for use on the right-hand side of an assignment. It has a value, but it's meaningless to try to change that value.

基本上,您只需要忍受这样一个事实,即在从函数返回时不能直接设置结构的字段。

2) 是

3) 不幸的是,我认为没有用于添加两个 CGPoint 的内置便捷方法。如果您发现自己经常这样做,您可以自己制作:

CGPoint CGPointAdd(CGPoint p1, CGPoint p2)
{
return CGPointMake(p1.x + p2.x, p1.y + p2.y);
}

然后像这样使用它:

obj.pointA = CGPointAdd(obj.pointA, pointB);

不像 obj.pointA.X += ... 那样优雅,但有时​​生活并不公平。

关于objective-c - 设置和使用 obj-c CGPoint、CGRect 和其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4236581/

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