2012-08-08 72 views
0

我正在使用asihhtp请求在ios中向图像上载发出多个请求以将图像提交到服务器。但是由于进度条,我的应用程序总是崩溃。这是我的代码使用asihttp请求在表中使用进度条发出多个请求

   ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlStr]]; 
       [request appendPostData:postData]; 
       [request setTag:[[dic objectForKey:@"unique"] integerValue]]; 
       [request setDelegate:self]; 
       [request setUploadProgressDelegate:cell.mProgressBar]; 
       [request setDidFailSelector:@selector(requestFail:)]; 
       [request setDidFinishSelector:@selector(requestDone:)]; 
       [request setRequestMethod:@"POST"]; 
       [request addRequestHeader:@"Content-Type" value:@"text/plain"]; 
       [request setShouldContinueWhenAppEntersBackground:YES]; 
       //[myQueue addOperation:request]; 
       [appDelegate window].userInteractionEnabled = NO; 
       [request startAsynchronous]; 

在那里我有,我有进度条和标签所以一旦程序完成我很隐藏的酒吧和显示完成拉布勒自定义单元格。

问题,当用户滚动表格应用程序崩溃使用于进度条

崩溃输出

> -[UIProgressView respondsToSelector:]: message sent to deallocated instance 0x10d210c0 

自定义单元代码

#import <UIKit/UIKit.h> 

    @interface CustomProgressBar : UITableViewCell 
    { 

    } 

    @property (retain, nonatomic) IBOutlet UILabel   *mlblCompllrtrlbl; 
    @property (retain, nonatomic) IBOutlet UIProgressView *mProgressBar; 
    @property (retain, nonatomic) IBOutlet UIImageView  *mCellImafge; 

    @end 

自定义单元代码

#import "CustomProgressBar.h" 

    @implementation CustomProgressBar 
    @synthesize mlblCompllrtrlbl; 
    @synthesize mProgressBar; 
    @synthesize mCellImafge; 

    - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier 
    { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     // Initialization code 
    } 
    return self; 
    } 

    - (void)setSelected:(BOOL)selected animated:(BOOL)animated 
    { 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 
    } 

    - (void)dealloc 
    { 
    [mCellImafge release]; 
    [mlblCompllrtrlbl release]; 
    [mProgressBar release]; 
    [super dealloc]; 
    } 

    @end 
+0

你可以发表你的自定义单元格代码头/实现文件吗? – 2012-08-08 08:37:18

+0

你有没有为你的问题得到任何解决方案?我面临同样的问题。 – 2013-07-04 14:37:02

回答

0

你可能在某处发布了进度视图,因此首先删除语句

[UIProgressView release];

+0

不,我不删除。我的猜测是当我滚动的时候,那里发生了一些错误 – test 2012-08-08 08:35:08

0

表细胞自动释放。所以每当你滚动表,然后progressview将被释放,并可能是您尝试访问该progessView的方法

0

你tableviewcell将要么被释放或重复使用(取决于你如何设置重用标识符)当它离开屏幕时。

您需要以独立于表视图单元格的方式跟踪您的请求。您可能需要一个单独的对象,它表示存储在属于视图控制器的NSArray中的每个请求,或者属于某个与您希望请求具有相同生命周期的其他对象。