@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 для обоих х и у. В чем разница между этими двумя методами. Для меня это похоже на то же самое.
Можете ли вы предоставить '@ interface' для' 'XYPoint' и Rectangle' тоже? – Jack