2011-11-17 3 views
2

프로그램 또는 기본 스레드의 실행을 방해하지 않고 별도의 스레드에서 NSMutableArray에 모든 사진 라이브러리 이미지 URL을 가져 오거나 추가하려고합니다.별도의 스레드에서 ALAssetLibrary 블록 실행

다른 작업이 진행되는 동안 애플리케이션 백그라운드에서 프로세스를 수행해야합니다.

그래서 아래 코드를 내 App Delegate 클래스 "didFinishLaunchingWithOptions" Delegate와 내 View Controller 클래스의 ViewDidLoad 함수에 썼습니다.

그러나 ALAsset 블록이 실행되는 동안 다른 기능은 작동하지 않습니다.

그러나 방법 "crcGeneration"은 다른 기능을 방해하지 않고 작동합니다. 아래의 코드에서 볼 수 있듯이 모든 사진 라이브러리 URL을 얻은 후에 동일한 스레드의 ALAsset 블록에 "crcGeneration" 메서드를 호출했습니다.

아무도 나에게이 문제를 해결하는 좋은 방법을 말해 줄 수 있습니까?

OnViewDidLoad :

//Calling the getAllURLofPhotLibraryImages Function on a seperate Thread. 
[NSThread detachNewThreadSelector:@selector(getAllURLofPhotLibraryImages) toTarget:self withObject:nil]; 


Function for Getting all image URL's of PhotoLibrary. 
**-(void)getAllURLofPhotLibraryImages** 
{ 
    urlStoreArray = [[NSMutableArray alloc] init];  //global array 


     void (^assetEnumerator)(struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) 
     { 
      if(result != NULL) 
       { 

       // Here storing the asset's image URL's in NSMutablearray urlStoreArr 
       NSURL *url = [[result defaultRepresentation] url]; 
       [urlStoreArray addObject:url];     
      } 

     }; 

     void (^assetGroupEnumerator)(struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) 
     { 

      if(group != nil) 
      { 
       [group enumerateAssetsUsingBlock:assetEnumerator]; 
      } 
      else 
      {  

       **[self crcGeneration];** //Genearting CRC for PhotoLibrary Images using urlStoreArray after got all the Photo Library URL's . 
      } 

     }; 
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease]; 
    [assetslibrary enumerateGroupsWithTypes:ALAssetsGroupAll  usingBlock:assetGroupEnumerator failureBlock: ^(NSError *error) {  NSLog(@"Failure"); 

    }]; 

} 

답변

0

은 다음과 같이 자산 URL을 받고보십시오 : -defaultRepresentation의 구현은 아마 메인 큐에 동 기적으로 파견되어

NSURL *url = [result valueForProperty:ALAssetPropertyAssetURL]; 

.

관련 문제