Чрезвычайно высокая загрузка ЦП с помощью SPSearch Cocoalibspotify

Я использую CocoaLibSpotify в своем приложении для iPhone. В какой-то момент у пользователя есть возможность искать исполнителей/песни и т. д. на Spotify. После завершения поиска UITableView заполняется результатами поиска. Я заметил, что приложение начинает сильно отставать после выполнения нескольких поисков. Я запустил Монитор активности в Инструментах и ​​заметил, что загрузка ЦП (% ЦП в Мониторе активности) поднимается примерно до 200% после выполнения поиска. Что странно, иногда требуется до 2 минут, чтобы вернуться к нормальному уровню около 6%. Вот код, который я использую для поиска:

-(void)performSearch:(NSString *)searchString{

    if(!self.spotifySearch){
        self.spotifySearch = [SPSearch searchWithSearchQuery:searchString inSession:[SPSession sharedSession]];

        [SPAsyncLoading waitUntilLoaded:self.spotifySearch timeout:20.0 then:^(NSArray *loadedItems, NSArray *notLoadedItems){
            NSLog(@"Search completed");
            self.spotifySearch = nil;
        }];
    }
}

Очевидно, что мой метод поиска на самом деле еще мало что делает, но простое выполнение приведенного выше кода несколько раз вызывает огромную нагрузку на ЦП. Иногда это также происходит после однократного запуска кода. Мои вопросы сейчас:

  1. Я что-то делаю не так?
  2. Как запустить несколько SPSearch с разными строками поиска? Является ли повторная инициализация объекта SPSearch с помощью SPSearch searchWithSearchQuery правильным способом сделать это?
  3. Есть ли способ отменить текущий поиск?

Любая помощь приветствуется, спасибо!


person cbbcloud    schedule 19.04.2013    source источник


Ответы (1)


Вы уверены, что причина в поиске? Известно, что система списков воспроизведения иногда вызывает высокую загрузку ЦП. Используйте инструменты, чтобы определить точную причину нагрузки, и вы будете в гораздо лучшем положении, чтобы исправить ее.

В вашем подходе нет ничего плохого. Чтобы отменить поиск, просто отпустите его, и он исчезнет. Также нормально иметь несколько экземпляров поиска, работающих одновременно.

person iKenndac    schedule 19.04.2013
comment
Привет. Спасибо за ваш быстрый ответ. Я создал пример проекта, который просто позволяет пользователю искать вещи на Spotify. Кажется, что запаздывающее поведение не всегда воспроизводимо. Несмотря на это, я разместил пример проекта в коде Google. Может быть, вы могли бы взглянуть на него? Код находится здесь: svn checkout spotifysearchsample.googlecode.com/svn/trunk spotifysearchsample-read -Только. Спасибо еще раз за помощь. - person cbbcloud; 21.04.2013
comment
Это, кажется, разрешилось само собой. Я больше не могу воспроизвести это. - person cbbcloud; 01.05.2013