Użyłem próbki AVPlayerDemo z Apple docs i napisałem na niej mój własny interfejs do odtwarzania filmów wybranych z UITableViewController. Problem polega na tym, że gdzieś tu jest wyciek pamięci, którego nie mogę się dowiedzieć. Problem polega na tym, że obiekt AVPlayer nie jest zwolniony, domyślam się, że za każdym razem, gdy naciskasz przycisk Wstecz i wybierasz nowe wideo do odtwarzania, następuje ogromny skok w całkowitej ilości pamięci zużywanej przez aplikację, która jest tutaj pokazana:Przeciek pamięci w iOS, AVPlayer nigdy nie jest wycofywany
pierwszy raz film jest gracz, użycie pamięci jest 36.6MB, teraz po raz drugi:
Tutaj skoczył do 58.2MB, i ciągle rośnie z każdym czas wracam i ponownie odtwarzam film lub inny film.
Próbowałem za pomocą instrumentów o Przecieki, ale jeszcze nie były w stanie zorientować się, co jest nie tak z nim.
Oto cały plik kontrolera code.
// EDIT
-(void) viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
if(_player.rate == 1.0){
[_player pause];
}
[idleTimer invalidate];
if(mTimeObserver){
[_player removeTimeObserver:mTimeObserver];
mTimeObserver = nil;
}
[_playerItem removeObserver:self forKeyPath:kStatusKeyT];
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:_playerItem];
_player = nil;
_playerItem = nil;
idleTimer = nil;
_tapGestureRecognizer = nil;
}
-(void) dealloc
{
NSLog(@"DEALLOCING");
}
Przepraszam, ale nikt nie przejdzie przez cały plik ... musisz go zawęzić poprzez debugowanie kilku innych elementów (np. Wyłączyć niektóre funkcje i spróbować ponownie lub użyć widoku przydziału na instrumentach, aby określić, skąd się bierze zatrzymany, itp.) – borrrden
Wiem, właśnie dodałem całość, tak że nie pomijam niczego, co może powodować wycieki. Po prostu skopiuję odpowiedni kod i wkleję go tutaj. –
@FarazHassan próbowałeś zgłosić bilet do Apple? – CAMOBAP