【问题标题】:Extremely high CPU usage with SPSearch CocoalibspotifySPSearch Cocoalibspotify 的 CPU 使用率极高
【发布时间】:2013-04-12 21:10:25
【问题描述】:

我在我的 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 负载。有时它也会在只运行一次代码后发生。我现在的问题是:

  1. 我做错了什么吗?
  2. 如何使用不同的搜索字符串运行多个 SPSearch?使用 SPSearch searchWithSearchQuery 重新初始化 SPSearch 对象是正确的方法吗?
  3. 有没有办法取消正在运行的搜索?

感谢您的帮助,谢谢!

【问题讨论】:

    标签: ios spotify cocoalibspotify-2.0


    【解决方案1】:

    您确定实际上是搜索导致的吗?众所周知,播放列表系统有时会导致 CPU 使用率过高。使用仪器来推断负载的确切原因,您将能够更好地修复它。

    你的方法没有错。要取消搜索,只需释放它,它就会消失。同时运行多个搜索实例也很好。

    【讨论】:

    • 你好。感谢你的快速回复。我创建了一个示例项目,它只允许用户在 spotify 上搜索东西。似乎滞后行为不能始终如一地重现。不管我在谷歌代码上发布了示例项目。也许你可以看看它?代码在这里:svn checkout spotifysearchsample.googlecode.com/svn/trunkspotifysearchsample-read-only。再次感谢您的帮助。
    • 这似乎已经解决了。我再也无法重现这个了。
    猜你喜欢
    • 2012-02-14
    • 2023-01-19
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    相关资源
    最近更新 更多