Joe*_*oey 5 struct objective-c
我有三个问题围绕着我认为obj-c中的结构主题
1)为什么我经常(或总是)不能获取CGPoint或CGRect的成员var并逐个设置值?我发现我必须这样做:
CGPoint point;
point.x = someValue;
point.y = someOtherValue;
obj.myPoint = point;
Run Code Online (Sandbox Code Playgroud)
而不仅仅是obj.myPoint.x = someValue等.
2)这种行为在obj-c中的所有结构中是否一致?
3)是否有一种简单的方法来添加两个CGPoints?好像应该已经存在,但我找不到一个.我认为如果在将dest var设置为temp var之前必须使用临时CGPoint在两个CGPoints之间累积值(因为不能只执行pointA.x + = pointB.x),这会很麻烦y)相同.
Rob*_*und 11
1)从@sb回答Cocoa Objective-c Property C结构赋值失败
那将无法完成任何事情,因为[t member]返回一个结构,这是一个"r值",即.一个仅在作业右侧使用的值.它有一个值,但试图改变这个值是没有意义的.
基本上你只需要忍受从函数返回时不能直接设置struct的字段的事实.
2)是的
3)不幸的是,我不认为有一个内置的方便方法来添加两个CGPoint.如果你发现自己经常这样做,你可以自己做:
CGPoint CGPointAdd(CGPoint p1, CGPoint p2)
{
return CGPointMake(p1.x + p2.x, p1.y + p2.y);
}
Run Code Online (Sandbox Code Playgroud)
然后使用它像:
obj.pointA = CGPointAdd(obj.pointA, pointB);
没有那么优雅,obj.pointA.X += ...但有时生活不公平.
这是完全正常的。'obj' 拥有该 var 并具有 getter 和 setter,您无法修改该变量的部分内容。
最好的办法是复制结构并修改您需要的任何内容。
另请注意,您可以使用 CGPointMake(x, y) 函数(对于所有 CG 结构都相同),这要容易得多。
要更新这是最简单的:
CGPoint point = obj.myPoint;
point.x += 10.0f;
obj.myPoint = point;
Run Code Online (Sandbox Code Playgroud)
Obj-C 2.0 隐藏了 getter 和 setter,如下所示:
CGPoint point = [obj myPoint];
point.x += 10.0f;
[obj setMyPoint:point];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16274 次 |
| 最近记录: |