Должен ли я выпустить NSBundle в звуке? - PullRequest
0 голосов
/ 30 мая 2011

Должен ли я выпустить NSBundle в коде ниже или нет?NSURL тоже должен быть релиз или нет?Я в замешательстве.

NSBundle  *mainBundle = [NSBundle mainBundle];
NSError   *error;
NSURL     *audioURL = [NSURL fileURLWithPath:[mainBundle pathForResource:@"count_in" ofType: @"mp3"]];
AVAudioPlayer *player1 = [(AVAudioPlayer*) [AVAudioPlayer alloc] initWithContentsOfURL:audioURL error:&error];
self.player =   player1;
[self.player play];
[player1 release];

1 Ответ

5 голосов
/ 30 мая 2011

Вы не должны выпускать NSBundle и NSURL экземпляры, потому что вы их не распределили.

Из яблочной документации.

Вы становитесь владельцем объекта, если создаете его с помощью метода, имя начинается с «alloc», «new», «Копия» или «mutableCopy» (например, alloc, newObject или mutableCopy) или если вы отправите сообщение о сохранении.

Вы используете release или autorelease, чтобы отказаться от владения объектом. autorelease просто означает «отправить релиз» сообщение в будущем »(а именно: когда используется авто-релиз бассейн получает сообщение утечки - чтобы понять когда это будет, см. «Авто-релиз» Бассейны»).

Я настоятельно рекомендую вам очистить вашу концепцию управления памятью.

Прочитайте статью о яблоке на Правила управления памятью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...