2013-10-03 29 views
1

嗨,我試圖從Facebook獲取用戶的朋友個人資料圖片並將其加載到我的表中,並且它工作正常,但是它需要很長時間你有我的朋友,我已經注意到,在我的fetchPeopleimages函數的部分[NSData dataWithContentsOfURL:imageURL]正在延遲。我已經通過stackoverflow搜索,似乎我可能不得不實施NSURLConnection sendAsynchronousRequest 方法或緩存。但沒有合適的例子。任何人都可以提供一個解決方案嗎?如果我必須實現這些方法,請舉例說明如何在代碼中實現它。從iOS的Facebook獲取圖像的速度更快

-(void) fetchPeopleimages 
{ 
if ([listType isEqualToString:@"Facebook"]) 
    { 
     int count=0; 
     NSMutableArray *imageArray=[[NSMutableArray alloc]initWithCapacity:[_peopleImageList count]]; 

     for(NSString *imageUrl in _peopleImageList) 
     { 
      NSData *imageData = nil; 
      NSString *imageURLString = imageUrl; 
      count++; 
      NSLog(@"URL->%@,count->%d", imageURLString,count); 

      if (imageURLString) 
      { //This block takes time to complete 
       NSURL *imageURL = [NSURL URLWithString:imageURLString]; 
       imageData = [NSData dataWithContentsOfURL:imageURL]; 
      } 
      if (imageData) 
      { 
       [imageArray addObject:imageData]; 
      } 
      else 
      { 
       [imageArray addObject:[NSNull null]]; 
      } 

     } 

    _peopleImageList=imageArray; 
     NSLog(@"%@",_peopleImageList); 
    } 
} 

回答

0

永遠不要_ _withContentsOfURL在iOS應用程序。正如您所看到的,它會阻止它運行的線程,從而使您的應用顯得不穩定或無響應。如果你真的很幸運,如果其中一個操作需要很長時間,iOS監視程序計時器將會終止你的應用程序。

對於這樣的事情,您必須使用異步網絡操作。

蘋果有一個示例應用程序,完全是這樣的: https://developer.apple.com/library/ios/samplecode/LazyTableImages/Introduction/Intro.html