gpt4 book ai didi

iphone - tabBar应用程序中下载多首歌曲的问题

转载 作者:行者123 更新时间:2023-12-03 18:36:40 25 4
gpt4 key购买 nike

我有标签栏应用程序,在第一个标签中我有一个 webView,因此当用户打开网站并要下载一些歌曲 mp3 格式时,它会推送另一个 View ,该 View 从用户那里获取标题。

给出标题后,我只需将 tabbarSelectController 更改为歌曲的一个标题下载开始并显示在选项卡栏上选定的索引 1 处。当我将选项卡更改为选定的索引 0 并选择另一首歌曲进行下载并再次返回到选定的索引 1 时,第一次下载停止,第二次下载恢复。

所以我想下载多首歌曲,但不太知道在这种情况下如何做到这一点,因为用户动态添加歌曲我也见过 ASINtworkQueue,但不知道它是如何工作的

最佳答案

ASINetworkQueue 只是 NSOperationQueue 的子类,它的作用是创建一个 Request 对象队列,例如,您可以有 10 个请求等待,并且一次参加 5 个请求,当一个请求完成后,队列中的另一个请求将变为事件状态。

拥有一个请求队列对于您的情况当然很有帮助,但是您还没有粘贴任何关于您现在如何处理请求的代码。所以我会给你一个关于如何完成的“一般概念”:

首先,我假设您已经弄清楚如何识别用户何时要下载歌曲,并拥有文件的 URL。如果没有,here's another question related 。另外,have ASI installed

让我们添加一个处理下载的对象,例如 DownloadManager:

#import "ASINetworkQueue.h"
#import "ASIHTTPRequest.h"

@interface DownloadManager : NSObject <ASIHTTPRequestDelegate>
{
ASINetworkQueue *requestQueue;
}

+ (DownloadManager*)sharedInstance;
- (void)addDownloadRequest:(NSString*)URLString;

我将使此类表现得像单例( based on this answer ),因为我想象您正在使用单个下载队列。如果情况并非如此,请根据您的需要进行调整:

@implementation DownloadManager

static DownloadManager *_shared_instance_download_manager = nil;

+ (DownloadManager*)sharedInstance
{
@synchronize
{
if (!_shared_instance_download_manager)
{
_shared_instance_download_manager = [[DownloadManager alloc] init];
}

return _shared_instance_download_manager
}
}

- (id)init
{
self = [super init];

if (self)
{
requestQueue = [[ASINetworkQueue alloc] init];
requestQueue.maxConcurrentOperationCount = 2;
requestQueue.shouldCancelAllRequestsOnFailure = NO;
}

return self;
}

- (void)addDownloadRequest:(NSString*)URLString
{
NSURL *url = [NSURL URLWithString:URLString];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
request.delegate = self;

[requestQueue addOperation:request];
[requestQueue go];
}

- (void)requestFinished:(ASIHTTPRequest*)request
{
// Request finished.
}

- (void)dealloc
{
[requestQueue release];

[super dealloc];
}

@end

完成所有这些后,现在您可以简单地添加下载请求:

DownloadManager *manager = [DownloadManager sharedInstance];
[manager addDownloadRequest:MyUrl];

第一个选项卡会将项目添加到 DownloadManager,另一个选项卡必须听到下载何时完成或当前状态。我没有将其添加到代码中,因为它取决于您如何做这些事情。它可以是自定义委托(delegate)方法(即 - (void)DownloadManager:(DownloadManager*)downloadManager didFinishDownloadRequest:(ASIHTTPRequest*)request),或传递请求的当前委托(delegate),或使用 NSNotificationCenter .

关于iphone - tabBar应用程序中下载多首歌曲的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com