返回计算对象

时间:2014-05-17 15:19:17

标签: objective-c methods

我有一个基本的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

2 个答案:

答案 0 :(得分:1)

假设XYPointCG/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;
}