【发布时间】:2011-12-15 10:40:10
【问题描述】:
我目前将 ipa 发送给朋友进行测试。有趣的是,我的一位测试人员能够查看她存储在使用 iPhone 4 运行 IOS 5 的手机上的照片。
另外 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 放在 enumerate group 块中。
有谁知道怎么回事。
另外,iOS 4.3.3 的测试者之一可以在通用->设置下启用定位服务后显示他的照片。为什么我们必须启用它?我们可以在代码上启用它吗,因为它会给使用我们应用程序的用户带来很大的困扰。
【问题讨论】:
标签: iphone asynchronous photos alassetslibrary