Я не уверен, правильно ли я пишу этот код.
Fruit * o1 = [[Fruit alloc] initWithName:kFruitOrange imageView:orange1] ;
fruitArray = [[NSMutableArray arrayWithObjects:o1, nil] retain]; // retain array for later use.
На самом деле есть несколько фруктов.Так как я размещаю их, то присваиваю их массиву в моем методе init класса.Когда и как я должен выпустить эти объекты.
РАЗЪЯСНЕНИЕ. Если после сохранения в массиве я освобождаю [o1 release]
, я получаю ошибки "exc_bad_access" при просмотре массива другими методами.
В моем методе viewDidUnloadЯ просмотрел массив и освободил каждый объект вручную.
for (Fruit * f in fruitArray) {
[f release];
}
Я никогда раньше не видел, чтобы кто-то делал это в коде, поэтому я думаю, что это неправильный способ сделать это?
ОБНОВЛЕНИЕ
-(Fruit *) initWithName:(enum fruitTypes)fruitName imageView:(UIImageView *)iv{
if((self = [super init])){
name = @"Fuit Object";
NSLog(@"creating orange colour %i", fruitName);
switch (fruitName) {
case kFruitOrange:
NSLog(@"creating orange colour ");
colour = [UIColor orangeColor] ;
break;
case kFruitBanana:
colour = [UIColor yellowColor];
break;
case kFruitKiwi:
colour = [UIColor greenColor];
break;
case kFruitBlue:
colour = [UIColor blueColor];
break;
default:
NSLog(@"COLOUR NOT FOUND");
break;
}
value = fruitName;
imageView = iv;
center = iv.center;
[colour retain];
[imageView retain];
[name retain];
return self;
}
return nil;
}
** ОТВЕТ Я ДОЛЖЕН СОХРАНИТЬ ПЕРЕМЕННЫЕ, КОТОРЫЕ Я УСТАНОВИЛ В МОЕМ КЛАССЕ FRUIT.M.