title: UICollectionView scrolling is slow
body: <p>I have just created a <code>UICollectionView</code> in which The user can add images from their phone to the photo album feature in the app. I have the images save to the a subdirectory in the documents directory so more can be added and removed. However, when I scroll up and down the collection view, it is very laggy. </p>
  
  <p>How can I make the scroll nice and smooth?</p>
  
  <p>My Code: The first 16 images are preset images everything after that are from a subdirectory in documents Directory </p>
  
  <pre><code>- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
  {
      CollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Custom" forIndexPath:indexPath];
      //Current index number
      int index=indexPath.section * noOfSection + indexPath.row;
      //Check if its the preset photos
      if(index&lt;16){
          NSString *name=[recipePhotos objectAtIndex:indexPath.section * noOfSection + indexPath.row];
          cell.imageView.image=[UIImage imageNamed:name];
      }
  
  //not preset photos, so retrieve the photos the user added
      else {
          NSData *data= [NSData dataWithContentsOfFile:[recipePhotos objectAtIndex:index]];
          UIImage *theImage=[UIImage imageWithData:data];
  
          cell.imageView.image=theImage;
          data=nil;
      }
  
      return cell;
  }
  </code></pre>
  
  <p><strong>Time Profiler gave me this</strong></p>
  
  <pre><code>Running Time    Self        Symbol Name
  568.0ms   63.1% 0.0     Main Thread  0x4048
  320.0ms   35.5% 0.0     _pthread_start  0x405e
  320.0ms   35.5% 0.0      thread_start
  320.0ms   35.5% 0.0       _pthread_start
  320.0ms   35.5% 0.0        0x1084be960
  310.0ms   34.4% 1.0         0x1084be6f0
  7.0ms    0.7%   0.0         mach_msg
  2.0ms    0.2%   2.0         objc_msgSend
  1.0ms    0.1%   1.0         -[NSAutoreleasePool release]
  4.0ms    0.4%   0.0     _dispatch_mgr_thread  0x4052
  4.0ms    0.4%   0.0      _dispatch_mgr_thread
  4.0ms    0.4%   0.0       _dispatch_mgr_invoke
  4.0ms    0.4%   4.0        kevent
  3.0ms    0.3%   0.0     _dispatch_worker_thread2  0x62b24
  3.0ms    0.3%   1.0      start_wqthread
  3.0ms    0.3%   0.0     _dispatch_worker_thread2  0x62a84
  3.0ms    0.3%   0.0      start_wqthread
  3.0ms    0.3%   0.0       _pthread_wqthread
  3.0ms    0.3%   0.0        _dispatch_worker_thread2
  3.0ms    0.3%   0.0         _dispatch_queue_invoke
  3.0ms    0.3%   0.0          _dispatch_queue_drain
  3.0ms    0.3%   0.0           _dispatch_client_callout
  2.0ms    0.2%   0.0            my_io_execute_passive_block
  1.0ms    0.1%   0.0             __86-[NSPersistentUIManager writePublicPlistWithOpenWindowIDs:optionallyWaitingUntilDone:]_block_invoke_0835
  1.0ms    0.1%   0.0              -[NSPersistentUIManager writePublicPlistData:]
  1.0ms    0.1%   0.0               -[NSURL(NSURLPathUtilities) URLByAppendingPathComponent:]
  1.0ms    0.1%   0.0                -[NSURL getResourceValue:forKey:error:]
  1.0ms    0.1%   0.0                 CFURLCopyResourcePropertyForKey
  1.0ms    0.1%   0.0             __block_global_2
  1.0ms    0.1%   0.0              -[NSPersistentUIManager writeRecords:withWindowInfos:flushingStaleData:]
  1.0ms    0.1%   0.0            _dispatch_call_block_and_release
  1.0ms    0.1%   0.0             0x1084b8580
  1.0ms    0.1%   0.0              mach_msg_send
  1.0ms    0.1%   0.0               mach_msg
  1.0ms    0.1%   1.0                mach_msg_trap
  1.0ms    0.1%   0.0     _pthread_struct_init  0x62a83
  1.0ms    0.1%   0.0      start_wqthread
  1.0ms    0.1%   0.0       _pthread_wqthread
  1.0ms    0.1%   1.0        _pthread_struct_init
  1.0ms    0.1%   0.0     start_wqthread  0x62a7f
  </code></pre>