Куда делись мои звуки? - PullRequest
0 голосов
/ 15 июня 2010

В моем классе Row у меня есть метод initWithCoder, и все, что восстановлено в этом методе, работает нормально, но только внутри метода.После вызова метода я теряю массив звуков, который есть в моем классе Row.Класс звуков также имеет метод initWithCoder, и звук воспроизводится нормально, но только в методе класса Row initWithCoder.После декодирования объекта Row звуковой массив полностью исчезает и не может быть вызван.

Вот мой источник для initWithCoder:

- (id) initWithCoder:(NSCoder *)coder {
    ...
    soundArray = [coder decodeObjectForKey:@"soundArray"];
    NSLog(@"%d",[soundArray count]);
    return self;
}

В журнале счетчик отображается как 8, как и должно(это пока разархивировать).Затем объект строки, который я создаю, получает назначение.И у получающегося объекта строки больше нет SoundArray.

[NSKeyedArchiver archiveRootObject:row toFile:@"DefaultRow"];
...
row = [NSKeyedUnarchiver unarchiveObjectWithFile:@"DefaultRow"];

Так что теперь, когда я вызываю soundArray, он падает.

//ERROR IS HERE
NSLog(@"%d",[[row soundArray] count]);

Помогите пожалуйста (soundArray является NSMutableArray).

1 Ответ

2 голосов
/ 15 июня 2010

Вам необходимо сохранить soundArray в initWithCoder: & mdash; Вы можете прочитать об управлении памятью Какао на сайте Apple .

Если вы не retain soundArray, он будет позже dealloc 'ed, так как вы не заявили право собственности на него. По сути, decodeObjectForKey: возвращает объект, который был autoreleased.

...