Кроме странного и неправильного метода free
и отсутствующего dealloc
(при условии, что вы не используете сборщик мусора), который выглядит абсолютно нормально.
И я, вероятно, не назвал бы переменную экземпляра square
.
Кроме того, вы можете рассмотреть тест в -init
, чтобы убедиться, что square
успешно выделен:
- (id) initWithSide: (int) s
{
self = [super init];
if(self != nil)
{
square = [[Shape alloc] initWithHeight:s andWidth:s];
if (square == nil)
{
[self release];
return nil;
}
}
return self;
}
И тип возвращаемого значения инициализатора всегда должен быть id
Редактировать: для метода dealloc
-(void) dealloc
{
[square release];
[super dealloc];
}