Я получаю объект изображения таким образом, когда пользователь выбирает изображения из подборщика изображений.[library assetForURL: url resultBlock:^(ALAsset * asset) Не исполнять
-(NSMutableData *)GetImageAsset :(int)index
{
dm=[DataManager sharedManager];
NSURL *url=[dm.imgAssetsArr objectAtIndex:index];
__block NSMutableData *data;
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:url resultBlock:^(ALAsset *asset)
{
if (asset) {
ALAssetRepresentation *representation = [asset defaultRepresentation];
data = [NSMutableData data];
NSError *error;
long long bufferOffset = 0ll;
NSInteger bufferSize = 10000;
long long bytesRemaining = [representation size];
uint8_t buffer[bufferSize];
while (bytesRemaining > 0) {
NSUInteger bytesRead = [representation getBytes:buffer fromOffset:bufferOffset length:bufferSize error:&error];
if (bytesRead == 0) {
NSLog(@"error reading asset representation: %@", error);
return;
}
bytesRemaining -= bytesRead;
bufferOffset += bytesRead;
[data appendBytes:buffer length:bytesRead];
}
}
}
failureBlock:^(NSError *error)
{
NSLog(@"assetForURL error = %@", error);
}];
return data;
}
Но это никогда не заходит внутрь блока. просто пропустите блок и перейдите к заявлению return
. Поэтому мой data
всегда становится нулевым. Почему это. Пожалуйста, помогите мне. Благодаря
не могли бы вы объяснить это больше? – user1960169
В чем разница между синхронными вызовами и асинхронными вызовами? – trojanfoe