在我遗漏Rectangle
的{{1}}的实施部分中,它对我来说仍然有效。是#import "XYpoint"
良好做法还是影响该计划?
#import "XYpoint"
#import <Foundation/Foundation.h>
@interface XYPoint : NSObject
@property int x, y;
-(void) setX: (int) xVar andY: (int) yVar;
@end
#import "XYpoint.h"
@implementation XYPoint
@synthesize x, y;
-(void) setX:(int)xVar andY:(int)yVar {
x = xVar;
y = yVar;
}
@end
#import <Foundation/Foundation.h>
@class XYPoint;
@interface Rectangle: NSObject
-(XYPoint *) origin;
-(void) setOrigin: (XYPoint *) pt;
@end
#import "Rectangle.h"
#import "XYpoint.h"
@implementation Rectangle {
XYPoint *origin;
}
-(void) setOrigin:(XYPoint *)pt {
origin = pt;
}
-(XYPoint *) origin {
return origin;
}
@end
答案 0 :(得分:3)
Rectangle
的实施不会使用XYPoint
类的任何细节。它只是将它视为通用指针,从不发送消息或取消引用它。因此,前向声明(@class
接口文件中的Rectangle
语句)就足够了。导入标题对编译的程序没有任何影响。
您的Rectangle
类很可能最终会发展为关注XYPoint
类的接口。如果是这样,它将需要导入该接口声明。如果您忽略导入它,编译器会发出警告。
那就是说,没有理由不进口它。