Методы делегирования AWS S3 прерваны на iPhone - PullRequest
1 голос
/ 20 января 2012

Я использую следующие три метода делегата для извлечения изображений из S3.Они вызываются в представленном порядке.

-(void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response;
-(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data;
-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response;

Я заметил, что если изображение большого размера, иногда didReceieveResponse будет вызываться до завершения предыдущего didCompleteWithResponse.Это облажает NSData, полученный во втором делегате.

Как мне это исправить?Все три вызываются в итерации оператора for для каждой итерации.вот так:

for (NSString *name in array){
        @try {
    S3GetObjectRequest *gor = [[S3GetObjectRequest alloc]initWithKey:name withBucket:[Constants pictureBucket]];
    [gor setDelegate:self];
    [s3 getObject:gor];

}

1 Ответ

0 голосов
/ 20 января 2012

Я не работал с S3, но я уверен, что будет какой-то способ отличить три различных AmazonServiceRequest *request в функциях делегата (возможно, ключ, который вы используете для init).Таким образом, вы можете выполнить любое действие, которое вы делаете с NSData, сначала проверив request, который вы возвращаете в функциях делегата

...