#import需要在这里使用吗?

时间:2012-05-26 22:12:29

标签: objective-c

在我遗漏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

1 个答案:

答案 0 :(得分:3)

Rectangle的实施不会使用XYPoint类的任何细节。它只是将它视为通用指针,从不发送消息或取消引用它。因此,前向声明(@class接口文件中的Rectangle语句)就足够了。导入标题对编译的程序没有任何影响。

您的Rectangle类很可能最终会发展为关注XYPoint类的接口。如果是这样,它将需要导入该接口声明。如果您忽略导入它,编译器会发出警告。

那就是说,没有理由不进口它。