我在我的 iPhone 应用程序中使用 CocoaLibSpotify。在某一时刻,用户可以选择在 Spotify 上搜索艺术家/歌曲等。搜索完成后,将使用搜索结果填充 UITableView。我注意到该应用程序在执行几次搜索后开始滞后很多。我在 Instruments 中启动了活动监视器,并注意到执行搜索后 CPU 使用率(活动监视器中的 CPU 百分比)攀升至 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;
}];
}
}
显然,我的搜索方法并没有真正做太多,但简单地多次运行上述代码会导致大量 CPU 负载。有时它也会在只运行一次代码后发生。我现在的问题是:
- 有什么我做错了吗?
- 如何使用不同的搜索字符串运行多个 SPSearch?使用 SPSearch searchWithSearchQuery 重新初始化 SPSearch 对象是正确的方法吗?
- 有没有办法取消正在运行的搜索?
任何帮助表示赞赏,谢谢!