我有一个基本的Rectangle类。我试图计算出原点,宽度和高度的右上角。
我在main.m中设置了原点,宽度和高度,我可以对它们进行NSLog并得到正确的值。当我尝试在矩形上调用一个名为upperRight的Rectangle方法时,无论输入如何都得到0,0
这是我在main.m中使用的行:
NSLog(@"The upper right corner is at x=%f and y=%f", myRectangle.upperRight.x, myRectangle.upperRight.y);
这是Rectangle类的相关(我认为):
@implementation Rectangle
{
XYPoint *origin;
XYPoint *originCopy;
XYPoint *upperRight;
}
@synthesize width, height;
-(XYPoint *) upperRight {
upperRight.x = origin.x + width;
upperRight.y = origin.y + height;
return upperRight;
}
即使我尝试在方法中设置upperRight.x = 200,我仍然会在main中返回0,0。
我显然在这里缺少一些基本的理解。
编辑:
以下是设置值的主要内容:
Rectangle *myRectangle = [[Rectangle alloc]init];
XYPoint *myPoint = [[XYPoint alloc]init];
XYPoint *testPoint = [[XYPoint alloc]init];
//XYPoint *translateAmount = [[XYPoint alloc]init];
[myRectangle setWidth: 15 andHeight: 10.0];
[myPoint setX: 4 andY: 3];
这是XYPoint.m:
#import "XYPoint.h"
@implementation XYPoint
@synthesize x, y;
-(void) setX:(float)xVal andY:(float)yVal {
x = xVal;
y = yVal;
}
@end
答案 0 :(得分:1)
假设XYPoint
与CG/NSPoint
相同(struct
有两个float
s),那你为什么要指向它们?
我认为你的意思是:
implementation Rectangle
{
XYPoint origin;
XYPoint originCopy;
XYPoint upperRight;
}
// Strange semantics here... a method that modifies upperRight before returning it?!?
// So why is upperRight an instance variable? Something is rotten in the state of Denmark.
-(XYPoint) upperRight {
upperRight.x = origin.x + width;
upperRight.y = origin.y + height;
return upperRight;
}
这只是猜测,因为你没有透露XYPoint
......
答案 1 :(得分:1)
以下是我最终做的符合我原始方法的内容(无论是否理想,我都不知道。)
-(XYPoint *) upperRight {
XYPoint *result = [[XYPoint alloc]init];
result.x = origin.x + width;
result.y = origin.y + height;
return result;
}