0

iPhone アプリで CocoaLibSpotify を使用しています。ある時点で、ユーザーは Spotify でアーティスト/曲などを検索するオプションを利用できます。検索が完了すると、UITableView に検索結果が入力されます。いくつかの検索を実行した後、アプリが大幅に遅れ始めることに気付きました。Instruments でアクティビティ モニターを起動し、検索を実行した後、CPU 使用率 (アクティビティ モニターの % CPU) が約 200% まで上昇することに気付きました。奇妙なことに、約 6% の通常​​レベルに戻るまでに最大 2 分かかることがあります。検索を実行するために使用しているコードは次のとおりです。

-(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;
        }];
    }
}

明らかに、私の検索方法はまだあまり機能していませんが、単純に上記のコードを複数回実行すると、大量の CPU 負荷が発生します。コードを一度だけ実行した後に発生することもあります。私の質問は次のとおりです。

  1. 私が間違っていることはありますか?
  2. 異なる検索文字列で複数の SPSearch を実行するにはどうすればよいですか? SPSearch searchWithSearchQuery を使用して SPSearch オブジェクトを再初期化することは、これを行う適切な方法ですか?
  3. 実行中の検索をキャンセルする方法はありますか?

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

0

それは実際に検索が原因であると確信していますか?プレイリスト システムは、CPU 使用率が高くなることが知られています。Instruments を使用して負荷の正確な原因を推測すると、それを修正するためのより良い立場に立つことができます。

あなたのアプローチに問題はありません。検索をキャンセルするには、放すだけで消えます。複数の検索インスタンスを同時に実行することも問題ありません。

于 2013-04-19T13:34:01.027 に答える