- (void)thumbnail:(NSNumber *)index{
__block NSNumber *number = [NSNumber numberWithInt:[index intValue]];
ALAssetsLibrary *library = [ALAssetsLibrary sharedALAssetsLibrary];
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
CGImageRef iref = [myasset thumbnail];
if (iref) {
[delegate thumbnailDidLoad:[UIImage imageWithCGImage:iref] withIndex:number];
}
NSLog(@"RESSSSSSSSSSSSSSSSSSSSSSSSSSSSSULT");
};
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{
NSLog(@"Error, can't get image - %@",[myerror localizedDescription]);
};
NSString *mediaurl = @"assets-library://asset/asset.JPG?id=5AF4118C-947D-4097-910E-47E19553039C&ext=JPG";
NSURL *asseturl = [NSURL URLWithString:mediaurl];
[library assetForURL:asseturl resultBlock:resultblock failureBlock:failureblock];
NSLog(@"asseturl %@",asseturl);
}
这是我的代码,我的块有问题 - 它们在模拟器5.0下工作,但它们根本无法在设备下工作,它不会在断点处停止并且NSLog不起作用。使用模拟器都能正常工作。注意:CLAuthorizationStatus == kCLAuthorizationStatusAuthorized
答案 0 :(得分:1)
确保整个功能 - (void)thumbnail:(NSNumber *)index...
是从主线程执行的,或者您确定用户已授权您的应用使用位置服务。如果您在后台调用它并且您还没有授权,那么将永远不会提示用户进行批准,也不会调用结果或失败块。
答案 1 :(得分:0)
从iOS5开始,assetForURL工作异步。请务必致电
[delegate thumbnailDidLoad:[UIImage imageWithCGImage:iref] withIndex:number];
在主线程上。通过在主队列上使用dispatch_async,这是最简单的方法。
干杯,
亨德里克