需要有关objective-c和opps概念的帮助

需要有关objective-c和opps概念的帮助,objective-c,ios,oop,Objective C,Ios,Oop,目前我正在开发短信应用程序,它可以发送文字信息、图像和音频文件 文件上传到http服务器上,为了下载和上传,我使用NSURLConnection 当用户点击下载按钮时,我提取出表视图的单元格,并添加progressview作为子视图,如下所示 在头文件中 @property (strong, nonatomic) UIProgressView *progress; 在类文件中我的下载方法 progress = [[UIProgressView alloc]initWithProgressVie

目前我正在开发短信应用程序,它可以发送文字信息、图像和音频文件

文件上传到http服务器上,为了下载和上传,我使用NSURLConnection

当用户点击下载按钮时,我提取出表视图的单元格,并添加progressview作为子视图,如下所示

在头文件中

@property (strong, nonatomic) UIProgressView *progress;
在类文件中我的下载方法

progress = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];
        progress.trackTintColor = [UIColor grayColor];
        progress.frame = CGRectMake(10, 50, 160, 30);
        progress.progress = 0.0;
        [cell addSubview:progress];
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    if(imgUpload)
    {
        NSLog(@"UPLOAD");
    }
    else
    {
        [self.resourceData appendData:data]; 
        NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[self.resourceData length]];

        [self.progress setProgress:[resourceLength floatValue] / [self.filesize floatValue] animated:YES];
    }
}
当收到数据时,调用此NSURLConnction委托方法

progress = [[UIProgressView alloc]initWithProgressViewStyle:UIProgressViewStyleBar];
        progress.trackTintColor = [UIColor grayColor];
        progress.frame = CGRectMake(10, 50, 160, 30);
        progress.progress = 0.0;
        [cell addSubview:progress];
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    if(imgUpload)
    {
        NSLog(@"UPLOAD");
    }
    else
    {
        [self.resourceData appendData:data]; 
        NSNumber *resourceLength = [NSNumber numberWithUnsignedInteger:[self.resourceData length]];

        [self.progress setProgress:[resourceLength floatValue] / [self.filesize floatValue] animated:YES];
    }
}
如果有多个文件,并且每次用户点击下载按钮时,整个代码都将执行,progressview将添加到该单元格中,但所有文件都通过进度变量引用如何唯一地标识每个progressview。如果我尝试下载三个文件,所有progressview都会显示自己的进度,并且工作正常

请澄清这个概念

是的,后台数据混乱,我试图同时下载音频和图像文件,但最终导致文件损坏。


请提供一个如何解决此问题的示例。

手机本身无法处理下载吗?因此,每个单元格都将是它自己的代理?当用户开始多次下载时,是否真的只有进度指标出错?你不也把你的自我资源数据搞砸了吗?如果我是你,我会介绍几个数据对象,每个下载一个。这些对象启动下载,因此单独接收didReceiveData消息。您可以通过对表的引用来启动这些对象,以便它们可以更新相关的进度条。如果在“表视图”单元格中执行此操作,请注意该单元格可能会从屏幕上滚下,并可能在下载过程中重复使用!罗斯,当手机被重新使用时会发生什么?特别是当在一个重复使用的单元格对象上也开始下载时?当然,你可以不应用重用机制。@sweetJenny,Ross是对的。不能仅在一个实例变量中引用3个单独的进度VIE。使用此模式也无法并行接收3个请求的数据。您必须为每次下载创建一个对象,作为接收数据和处理数据的代理。这些对象可以“知道”进度条显示在哪一行中。他们应该检查相关单元格是否可见,获取单元格对象并更新其进度条。@您的问题实际上不够具体,无法提供一些示例代码(至少imo或afaik)。你有一个结构性问题。试着让你自己的对象可以下载你的数据。然后允许该对象有一个委托,该委托将通知接收者下载进度(如上面HermannKlecker所说)。