Я столкнулся с этим 3 МБ malloc, созданным CoreVideo в моем приложении для iPad после выпуска объекта MPMoviePlayerController.
Я позаботился о том, чтобы проигрыватель был остановлен перед выпуском, поэтому он действительно освобождает память и освобождает должным образом. Дело в том, что инструменты продолжают показывать этот malloc, который еще не был выпущен (и я не использовал его непосредственно в моем коде)
Это вызов, который отображается в инструментах как ответственный абонент для 3.52MB Malloc, который так и не был выпущен.
CVPixelBufferBacking::initWithPixelBufferDescription
Вот код, где игроки остановлены и массив, который содержит их, выпущен
- (void)dealloc {
...
[self stopAllPlayers];
[_moviePlayerViewControllerArray release];
[super dealloc];
}
-(void)stopAllPlayers {
for (MPMoviePlayerController *mp in _moviePlayerViewControllerArray) {
[mp stop];
}
}
вот метод, который добавляет видео
-(void)addVideo:(NSString*) videoName onRect:(CGRect)rect {
......
MPMoviePlayerController * movieController= [[MPMoviePlayerController alloc]initWithContentURL:(NSURL *)videoURL];
// set frame for player
movieController.view.frame = rect;
// set auto resizing masks
[movieController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
// don't auto play.
[movieController setShouldAutoplay:NO];
[pdfView addSubview:movieController.view];
[pdfView bringSubviewToFront: movieController.view];
[_moviePlayerViewControllerArray addObject:movieController];
[movieController release];
}
РЕДАКТИРОВАТЬ: добавлено изображение . красивый 3-мегабайтный Malloc во всей своей красе.
как вы можете видеть, другой части памяти больше нет, но у меня все еще есть большая проблема.
заранее спасибо за помощь