私はいくつかのアプリの特定の部分に取り組んでいます。その部分はファイルアップロードマネージャーです。NSObject から継承し、メソッドを持つシングルトンである UploadManager クラスを実装しました。
- (void)addNewUploadWithFileData:(NSData *)fileData
withThumbnailData:(NSData *)thumbnailData
withUserId:(int32_t)userId
withType:(UploadType)uploadType
withMediaType:(MediaType)mediaType
withDelegate:(id<UploadDelegate>)delegate;
このメソッドは、新しいアップロード オブジェクトを作成します。アップロード オブジェクトは、AFHTTPClient を継承する BasicUpload クラスのサブクラスの 1 つです。
このすべての実装の目的は、複数のファイルのアップロード、それらの制御、およびその他の機能を許可することです。
同じファイルを複数回アップロードするために追加しているシナリオでは、すべてが完全に機能しており、すべてのアップロードが同時にアップロードされています。しかし、あるシナリオでは、アップロードするファイルを追加してから、アップロードする他の小さなファイルを追加すると、この小さなファイルがアップロードされ、他のファイルはアップロードされません。
何が起こっているのかを調べたところ、アップロードする新しい他のファイルを追加すると、新しいリクエストが作成され(明らかに)、作成された後、以前に追加された他のすべてのアップロードオブジェクトが解放されることがわかりました(割り当て解除) )。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 のサブクラス) の割り当てが解除されます。
私は何を間違っていますか??? それとも、おそらくいくつかのバグがありますか???