현재 테스트를 위해 친구에게 ipa를 보냅니다. 웃기는 건 내 테스터 중 한 명이 아이폰 4를 사용하여 IOS 5를 돌리고 있던 그녀의 사진을 볼 수 있다는 것입니다.Iphone : AlAssetsLibrary를 사용하여 사진을 표시 할 수 없습니다.
또 다른 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을 사용하는 테스터 중 하나는 일반 -> 설정에서 위치 서비스를 사용하도록 설정 한 후 사진을 표시 할 수 있습니다. 왜 우리가 그것을 가능하게해야합니까? 우리 응용 프로그램을 사용하는 사용자에게는 상당히 방해가 될 것이므로 코드를 사용하도록 설정할 수 있습니까?
죄송합니다. 답장을 늦게 보내 셨습니다. 이해가되지 않습니다. 나중에 사용하기 위해 AlAssets를 저장하려고 시도했다면,이 AlAsset은 null이거나 유사한 것입니다. 내 코드에서는 ALAssets 객체의 URL에만 관심이 있었기 때문에 객체 자체가 아니라 URL 만 유지했습니다. 그렇다면 여전히 객체의 수명에 대해 신경을 써야합니다. – LittleFunny
이러한 수집 된 자산 인스턴스는 무효화 된 값 (또는 유사한 것)을 얻습니다. 그렇습니다. 저작물의 URL에만 관심이 있다면이 URL 만 수집하십시오. 나중에 [assetForURL : resultBlock : failureBlock :] 메소드에서이 메소드를 사용하여 자산 오브젝트를 다시 검색하십시오. 전체가 MOC (Managed Object Context)의 코어 데이터처럼 보이고 ALAssetsLibrary 인스턴스는이 MOC 인스턴스처럼 보입니다. 따라서 핵심 데이터에서이 MOC 인스턴스를 "닫을"때 그 뒤에있는 데이터에 액세스 할 수 없습니다. – Lorion