2013-03-17 3 views
-2
@interface Rectangle: NSObject 
-(void) setOrigin : (XYPoint *) pt; 
-(XYPoint *) origin; 
... 
@end 

#import "XYPoint.h" 
#import "Rectangle.h" 
@implementation Rectangle 
-(void) setOrigin : (XYPoint *) pt 
{ 
    origin = pt; 
} 

-(XYPoint *) origin 
{ 
    return origin; 
} 
@end 

@interface XYPoint: NSObject 
@property int x, y; 
-(void) setX: (int) xVall andY; (int) yVal; 
@end 

#import "XYPoint.h" 
@implementation XYPoint 
@synthesize x, y 
-(void) setX: (int) xVal andY: (int) yVal 
{ 
    x = xVal; 
    y = yVal; 
} 
@end 

Выше является частью классов. Это главныйЯ не могу понять разницу в методе

int main (int argc, const char* argv[]) 
{ 
    XYPoint* myPoint = [[XYPoint alloc]init]; 
    Rectangle* myRect = [[Rectangle alloc]init]; 

    [myPoint setX: 200 andY: 100]; 

    [myRect setOrigin: myPoint]; 
    NSLog(@"origin of rectangle: (%i, %i)", myRect.origin.x, myRect.origin.y); 
    return 0; 
} 

Это прекрасно работает, как я ожидал. Но, если я изменю метод

setOrigin: (XYPoint *) pt 

в классе Rectangle, чтобы

-(void) setOrigin: (XYPoint *) pt 
{ 
    origin.x = pt.x; 
    origin.y = pt.y; 
} 

он просто печатает значение 0 для обоих х и у. В чем разница между этими двумя методами. Для меня это похоже на то же самое.

+0

Можете ли вы предоставить '@ interface' для' 'XYPoint' и Rectangle' тоже? – Jack

ответ

2

Я уверен, вы не alloc и init ваш origin объект инициализации Rectangle класса ...

+0

Можете ли вы уточнить? –

+2

@ProgrammingNerd В каком смысле? Вы назначаете init или нет? Если нет, сделайте это. – 2013-03-17 20:54:10

+0

Затем в первом, почему он работает, не делая alloc-init на объекте? –

Смежные вопросы