Я следую вместе с серией веб-уроков, связанных с Objective-C, и теперь получаю ошибку «Доступ к методу получения неизвестного источника», когда пытаюсь построить свою программу (origin является членом класса Rectangle, который я создал ).
Вот мой класс под названием PointXY:
#import <Foundation/Foundation.h>
@interface PointXY : NSObject
{
int x;
int y;
}
//Setters and Getters
@property int x;
@property int y;
//Methods
- (void) setXY : (int) xCO : (int) yCO;
@ конец
Затем я определяю класс прямоугольника, в котором есть член типа PointXY:
#import <Foundation/Foundation.h>
@class PointXY;
@interface rectangle : NSObject
{
float width;
float height;
PointXY * origin;
}
//Setters and Getters
@property float width, height;
//Instance Methods
- (float) getArea;
- (float) getPerimeter;
//We already have setters and getters defined for width
//and height. The below method is for illustration purposes
- (void) setHW: (float) h : (float) w;
//Methods to set and get origin values
- (PointXY *) getOrigin; //Returns a PointXY object
- (void) setOrigin : (PointXY *) point;
@end
Я получаю сообщение об ошибке в main, если я пытаюсь получить доступ к свойству x или y моего элемента origin через мой оператор NSLog:
#import <Foundation/Foundation.h>
#import "rectangle.h"
#import "PointXY.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//Create an object
rectangle * myRectangle = [[rectangle alloc]init];
PointXY * rOrigin = [[PointXY alloc]init];
[rOrigin setXY:100 :100];
myRectangle.origin = rOrigin;
NSLog(@"The origin for the rectangle is %i, %i", myRectangle.origin.x, myRectangle.origin.y);
[pool drain];
return 0;
}
Я понимаю, что никто не может получить доступ к членам без явного определения синтезированного метода доступа или создания метода, который делает именно это, и был удивлен, увидев, что автор учебника сделал вышеупомянутое без проблем.
Возможно ли вышеизложенное? Могу ли я получить доступ к myRectangle.origin.x без синтеза источника в myRectangle или у меня что-то настроено неправильно.
Спасибо за ваше время.