【发布时间】:2012-08-09 11:14:39
【问题描述】:
我正在开发某个应用程序的某些部分。那部分是文件上传管理器。我已经实现了一个 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 的子类)都被释放。
我做错了什么???还是可能有什么bug???
【问题讨论】:
标签: ios xcode cocoa networking afnetworking