Я сейчас отправляю ipa друзьям для тестирования. Самое смешное, что один из моих тестировщиков мог просматривать ее фотографии, хранящиеся на ее телефоне, работающем под управлением IOS 5, с помощью iPhone 4.
Еще 2 тестера: у одного есть iPhone 4 (IOS 4.3.3) и iPhone 3GS (IOS 5.0.1), они не могут видеть фотографии, хранящиеся на их телефоне.
Вот код, который я использовал:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
//NSLog(@"See Asset: %@", @"ggg");
[assets addObject:result];
}
};
NSLog(@"location = %i length = %i ", range->location, range->length );
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
NSRange *datarange = malloc(sizeof(NSRange));
range->total = [group numberOfAssets];
datarange->location = [group numberOfAssets] - range->location - range->length;
datarange->length = range->length;
NSLog(@" total = %i", range->total);
int location = [group numberOfAssets] - range->location - range->length;
if (location < 0)
{
datarange->location = 0;
datarange->length = [group numberOfAssets] - range->location;
}
NSIndexSet *indexset = [ [NSIndexSet alloc] initWithIndexesInRange:*datarange];
[group enumerateAssetsAtIndexes:indexset options:NULL
usingBlock:assetEnumerator];
[indexset release];
free(datarange);
[self loadAssetToScrollView:assets];
}
};
[assets release];
assets = [[NSMutableArray alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];
[library release];
Я видел, как кто-то говорил об асинхронных вещах в других потоках, но не знаю, так ли это. Он говорит, что поместите dispatch_async в блок перечисления группы.
Кто-нибудь знает, что не так.
Кроме того, один из тестеров с iOS 4.3.3 может показывать свои фотографии после включения служб определения местоположения в General-> Setting. Почему мы должны включить это? Можем ли мы включить его в коде, так как это будет очень беспокоить пользователя, который использует наше приложение.