0

我正在开发某些应用程序的某些部分。那部分是文件上传管理器。我已经实现了一个 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 的子类)都被释放。

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

4

1 回答 1

0

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

于 2012-08-09T11:17:25.873 回答