0

私はいくつかのアプリの特定の部分に取り組んでいます。その部分はファイルアップロードマネージャーです。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 のサブクラス) の割り当てが解除されます。

私は何を間違っていますか??? それとも、おそらくいくつかのバグがありますか???

4

1 に答える 1

0

保持されるように、すべてのAFRequestOperationsを NSOperationQueue に追加することを検討しましたか?

于 2012-08-09T11:17:25.873 に答える