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 負荷が発生します。コードを一度だけ実行した後に発生することもあります。私の質問は次のとおりです。
- 私が間違っていることはありますか?
- 異なる検索文字列で複数の SPSearch を実行するにはどうすればよいですか? SPSearch searchWithSearchQuery を使用して SPSearch オブジェクトを再初期化することは、これを行う適切な方法ですか?
- 実行中の検索をキャンセルする方法はありますか?
どんな助けでも大歓迎です、ありがとう!