Arhn - архитектура программирования

утечка памяти avplayer

У меня есть вступительный фильм в моем проекте, когда приложение запускается, я, кстати, использую storyboard, затем я делаю свой MovieVC в качестве начального вида, поэтому, когда приложение запускается, отображается MovieVC, а затем, когда вы нажимаете или фильм заканчивается , он представит RootVC. Он работал в simulator и device, когда я тестировал его, но когда я тестировал его с instruments, используя Leaks, были обнаружены утечки памяти.

Я не знаю, что не так, я использую ARC, но я думаю, что мой moviePlayer не выпускается, или моя проблема в ViewControllers.

Вот мой код для моего MovieVC:

- (void)viewDidLoad
{

    self.view.backgroundColor = [UIColor whiteColor];

    NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"gameopening" ofType:@"m4v"];
    self.moviePlayer = [AVPlayer playerWithURL:[NSURL fileURLWithPath:moviePath]];
    [self.moviePlayer play];

    // Create and configure AVPlayerLayer
    AVPlayerLayer *moviePlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.moviePlayer];
    moviePlayerLayer.bounds = CGRectMake(0, 0, 1024, 768);
    moviePlayerLayer.position = CGPointMake(515,385);
    moviePlayerLayer.borderColor = [UIColor clearColor].CGColor;
    moviePlayerLayer.borderWidth = 3.0;
    moviePlayerLayer.shadowOffset = CGSizeMake(0, 3);
    moviePlayerLayer.shadowOpacity = 0.80;

    // Add perspective transform

    [self.view.layer addSublayer:moviePlayerLayer];    
    [super viewDidLoad];

    [self performSelector:@selector(loadingView) withObject:nil afterDelay:33.0];  
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
    tapGesture.numberOfTapsRequired = 1;
    [self.view addGestureRecognizer:tapGesture];


    [super viewDidLoad];
}

- (void)handleTapGesture:(UITapGestureRecognizer *)sender {

    if (sender.state == UIGestureRecognizerStateEnded) {
        UIImageView *loadingView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)]; 
        loadingView.image = [UIImage imageNamed:@"Load.png"];
        [self.view addSubview:loadingView];
        [self performSelector:@selector(mainV) withObject:nil afterDelay:2.0];  
    }

}
-(void)loadingView{

        UIImageView *loadingView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];  
        loadingView.image = [UIImage imageNamed:@"Load.png"];
        [self.view addSubview:loadingView];
        [self performSelector:@selector(mainV) withObject:nil afterDelay:2.0];  

}
-(void)mainV {

        moviePlayer = nil;
        UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"mainViewController"];
        vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentViewController:vc animated:YES completion:NULL];   
}

Надеюсь, кто-то поможет в том, что я делаю неправильно. Спасибо.


  • добавьте [super viewDidLoad] поверх метода viewDidLoad и удалите ненужную строку [super viewDidLoad], как вы использовали дважды. 26.09.2012
  • Можете ли вы уточнить, что именно, по словам Instruments, просочилось? 26.09.2012
  • @CarlVeazey Я использовал инструмент Leaks , вот мой другой вопрос, связанный с этим ---›stackoverflow.com/questions/12581164/ 26.09.2012
  • @Superman Я понимаю, что ты используешь утечки. Какие объекты утекают? 26.09.2012
  • @Принц, сделал то, что ты сказал, затем я проверил это на инструментах, но все еще протекает. :( 26.09.2012
  • @ Супермен, это очень расплывчато. Можете ли вы указать, какие объекты, созданные вашим кодом, утекают? Кроме того, ваши клиенты действительно возражают против утечки 48 байт? Сколько раз это просачивается? 26.09.2012
  • @CarlVeazey это часть self.moviePlayer = [AVPlayer playerWithURL:[NSURL fileURLWithPath:moviePath]];, только в начале она просачивается. 26.09.2012
  • давайте продолжим это обсуждение в чате 26.09.2012

Ответы:


1

Я предлагаю попробовать запустить инструмент с помощью устройства... как и раньше, была проблема с самой библиотекой. Если на устройстве утечка исчезнет, ​​тогда все готово.. :)

26.09.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..