Objective c 有趣的循环?基类如何包含子类作为成员?

Objective c 有趣的循环?基类如何包含子类作为成员?,objective-c,logic,member,superclass,Objective C,Logic,Member,Superclass,基类如何包含子类作为成员?例如: @interface Magic : NSObject { @private NSString* name; int power; int manaCost; SpecialKindOfMagic* thisMuch; } @end @interface SpecialKindOfMagic : Magic { @private int thisMuchSpecial; } @end 在声

基类如何包含子类作为成员?例如:

@interface Magic : NSObject {
@private
       NSString* name;
       int power;
       int manaCost;
       SpecialKindOfMagic* thisMuch;
}
@end

@interface SpecialKindOfMagic : Magic {
@private
       int thisMuchSpecial;
}
@end

在声明Magic类之前使用前向声明:

@class SpecialKindOfMagic;

@interface Magic ...
另外,声明一个不是从NSObject派生的类是非常不寻常的,所以您可能想写:

@interface Magic : NSObject {

你为什么要这么做?基类不应该知道派生它的任何东西。