Я просто не могу получить это! У меня есть собственный класс "Word", и я генерирую NSMutableArray объектов Word-класса в несколько шагов:
- words = [NSMutableArray array];
- для i = от 0 до 8
- слово = alloc + init;
- [words addObject: word];
- [выпуск слова];
Затем я передаю экземпляр instance установщику другого класса:
someInstance.words = words;
Если слова неатомичны, сохраняют свойство. Я объявляю метод setWords следующим образом:
-(void)setWords:(NSMutableArray *)w {
[w retain];
[words release];
words = w;
}
Когда слова приходят в метод как переменная "w", это массив объектов, но когда я сохраняю его и присваиваю старое значение, моя переменная слов становится NSMUtableArray, и ее число равно w.count, но элементы массива 0x0. Оператор "=" не копирует элементы массива, как я могу это исправить? Пожалуйста, помогите, я новичок в объективе-c.
Я создаю экземпляр Word только одним методом, должен ли я реализовать метод init без параметров?
-(id)initWithId:(int)Id Word:(NSString *)Word Card:(int)Card {
self.id = Id;
self.word = Word;
self.card = Card;
return self;
}
Цикл, в котором я генерирую свой NSMutableArray:
Card *card = [[Card alloc] initWithId:[s intForColumn:@"id"] Type:[s intForColumn:@"type"] Used:[s intForColumn:@"used"]];
s = [db executeQueryWithFormat:@"SELECT w.id as id, word, card FROM word as w INNER JOIN card as c ON w.card=c.id WHERE c.id=%i ORDER BY w.id, RANDOM()", card.id];
while ([s next]) {
Word *word = [[Word alloc] initWithId:[s intForColumn:@"id"] Word:[s stringForColumn:@"word"] Card:[s intForColumn:@"card"]];
[card.words addObject:word];
[word release];
}