2014-05-17 82 views
0

我有一個基本的Rectangle類。我正在試圖計算給定原點,寬度和高度的右上角。返回計算對象

我在我的main.m中設置原點,寬度和高度,我可以NSLog它們並獲取正確的值。當我嘗試在矩形上調用名爲upperRight的Rectangle方法時,我得到0,0而不管投入。

下面是我使用的main.m行:Rectangle類的

NSLog(@"The upper right corner is at x=%f and y=%f", myRectangle.upperRight.x, myRectangle.upperRight.y); 

下面是相關的(我認爲):

@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,我仍然獲得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

你可以顯示當你做設置/通話? – Larme

+0

@添加了本地信息 – tangobango

回答

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 ...

+0

我是初學者。什麼是正確的方式來返回上角? – tangobango

+0

@tangobango你需要保持原點和大小(見NS/CGRect)。然後從原點+尺寸計算右上角,因此不需要將右上角作爲實例變量。 – trojanfoe

+0

所以我應該主要做這個計算? – tangobango

1

這裏就是我最後做適合我原來的方法(不管它是理想的或不,我不知道。)

-(XYPoint *) upperRight { 
XYPoint *result = [[XYPoint alloc]init]; 

result.x = origin.x + width; 
result.y = origin.y + height; 
return result; 
} 
+0

對我來說看起來不錯,如果'XYPoint'是適當的Objective-C對象。 – trojanfoe