我正在研究某些应用的某些部分。那部分是文件上传管理器。我已经实现了一个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的子类)都被解除分配。
我做错了什么???或者可能有一些错误???