AFNetworking:上传多个文件的问题

时间:2012-08-09 11:14:40

标签: ios xcode cocoa networking afnetworking

我正在研究某些应用的某些部分。那部分是文件上传管理器。我已经实现了一个UploadManager类,它是一个继承自NSObject并具有方法的单例:

- (void)addNewUploadWithFileData:(NSData *)fileData
               withThumbnailData:(NSData *)thumbnailData
                      withUserId:(int32_t)userId
                        withType:(UploadType)uploadType
                   withMediaType:(MediaType)mediaType
                    withDelegate:(id<UploadDelegate>)delegate;

此方法创建新的上传对象。 Upload对象是继承自AFHTTPClient的BasicUpload类的子类之一。

所有这些实现的目的是允许多个文件上传,控制它们和其他功能。

在我添加多次上传同一文件的情况下,一切都运行正常,所有上传都是同时上传的。 但是在一个场景中,当我添加一些要上传的文件,然后添加一些其他较小的文件进行上传时,这个较小的文件会被上传,而其他文件则不会。

我已经检查过,发生了什么,并发现当我添加新的其他文件进行上传时,会创建新的请求(显然),创建之后,之前添加的所有其他上传对象都是释放(释放)。 它发生在AFHTTPClient.m中,方法:

- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method
                                                   path:(NSString *)path
                                             parameters:(NSDictionary *)parameters
                              constructingBodyWithBlock:(void (^)(id <AFMultipartFormData>formData))block

当它到达部分时:

__block AFMultipartFormData *formData = [[[AFMultipartFormData alloc] initWithURLRequest:request stringEncoding:self.stringEncoding] autorelease];

之后,所有先前的上传对象(AFHTTPClient的子类)都被解除分配。

我做错了什么???或者可能有一些错误???

1 个答案:

答案 0 :(得分:0)

您是否考虑将所有AFRequestOperations添加到NSOperationQueue,以便保留?