я учусь Цель C. здесь я задаю вопрос, который я не понимаю, пожалуйста, дайте решение этой проблемы.
XYPoint.h file
//header file
@interface XYPoint:NSObject
{
int x;
int y;
}
@property int x,y;
-(void) setX:(int ) d_x setY:(int )d_y;
// implementation file XYPoint.m
@synthesize x,y;
-(void) setX:(int ) d_x setY:(int ) d_y
{
x=d_x;
y=d_y;
}
//Rectangle.h file
@class XYPoint;
@Interface Rectangle:NSObject
{
int width,height;
XYPoint *origin;
}
@property int width,height;
-(XYPoint *)origin;
-(void) setOrigin:(XYPoint*)pt;
//at implementation Rectangle.m file
@synthesize width,height;
-(XYPoint *)origin
{
return origin;
}
-(void) setOrigin:(XYPoint*)pt
{
origin=pt;
}
//in main
#import "Rectangle.h"
#import "XYPoint.h"
int main(int argc,char *argv[])
{
Rectangle *rect=[[Rectangle alloc] init];
XYPoint *my_pt=[[XYPoint alloc] init];
[my_pt setX:50 setY:50];
rect.origin=my_pt; // how is this possible
return 0;
}
в цели c мы можем получить доступ к переменной экземпляра, используя оператор точки, если мы объявим как свойство. но здесь origin объявлен как переменная экземпляра в классе Rectangle. в основном классе мы получаем доступ к исходной переменной, используя точку. Я не знаю, как это работает. и rect.origin = my_pt строка вызывает метод setOrigin, как эта строка вызывает метод setOrgin. пожалуйста, объясните мне