Я немного озадачен тем, как я "устанавливаю" и "получаю" переменные экземпляра для объекта, который содержится внутри другого. Как видно из приведенного ниже кода, я сначала создаю RocketBody, который включает объект SolidRocketMotor. Я создаю SolidRocketMotor в RocketBody init и освобождаю его в RocketBody dealloc.
Мой вопрос: как мне настроить / получить переменные экземпляра движка (SolidRocketMotor) из основного (например, для установки engCase)?
int main (int argc, const char * argv[]) {
RocketBody *ares_1x;
ares_1x = [[RocketBody alloc] init];
[ares_1x setFuel: [NSNumber numberWithInt:50000]];
[ares_1x setWeight:[NSNumber numberWithFloat:1.8]];
// How to set engCase to "Standard" here?
...
.
@interface SolidRocketMotor : NSObject
{
NSString *engCase;
NSString *engPropellant;
NSNumber *engIgniter;
NSString *engNozzle;
}
@property(copy) NSString *engCase;
@property(copy) NSString *engPropellant;
@property(copy) NSNumber *engIgniter;
@property(copy) NSString *engNozzle;
@end
@interface RocketBody : NSObject
{
NSNumber *fuel;
NSNumber *weight;
BOOL holdDownBolt_01;
BOOL holdDownBolt_02;
BOOL holdDownBolt_03;
BOOL holdDownBolt_04;
SolidRocketMotor *engine;
}
@property(copy) NSNumber *fuel;
@property(copy) NSNumber *weight;
@property BOOL holdDownBolt_01;
@property BOOL holdDownBolt_02;
@property BOOL holdDownBolt_03;
@property BOOL holdDownBolt_04;
@end
// ------------------------------------------------------------------- **
// IMPLEMENTATION
// ------------------------------------------------------------------- **
@implementation SolidRocketMotor
- (id) init {
self = [super init];
if (self) NSLog(@"_init: %@", NSStringFromClass([self class]));
return self;
}
@synthesize engCase;
@synthesize engPropellant;
@synthesize engIgniter;
@synthesize engNozzle;
- (void) dealloc {
NSLog(@"_deal: %@", NSStringFromClass([self class]));
[super dealloc];
}
@end
// ------------------------------------------------------------------- **
@implementation RocketBody
- (id) init {
self = [super init];
if (self) {
engine = [[SolidRocketMotor alloc] init];
NSLog(@"_init: %@", NSStringFromClass([self class]));
}
return self;
}
@synthesize fuel;
@synthesize weight;
@synthesize holdDownBolt_01;
@synthesize holdDownBolt_02;
@synthesize holdDownBolt_03;
@synthesize holdDownBolt_04;
- (void) dealloc {
NSLog(@"_deal: %@", NSStringFromClass([self class]));
[engine release], engine = nil;
[super dealloc];
}
@end
большое спасибо
1011 * Гэри *