这里是我的collectionview的代码它显示记录,但加载真的请告诉我如何实现延迟加载在这我还有一个占位符pic在我的项目
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { CollectionViewCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MJCell" forIndexPath:indexPath]; // Setup image name NSString *url = [[RSSOutputData objectAtIndex:indexPath.row]xmllink]; UIImage *img = nil; NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]]; img = [[UIImage alloc] initWithData:data]; cell.MJImageView.image = img; return cell; }
现在它工作但很慢.
解决方法
使用GCD进行延迟加载非常容易.
// Create a queue for the operations dispatch_queue_t queue = dispatch_queue_create("photoList",NULL); // Start getting the data in the background dispatch_async(queue,^{ NSData* photoData = [NSData dataWithContentsOfURL:[NSURL URLWithString:object.photoURL]]; UIImage* image = [UIImage imageWithData:photoData]; // Once we get the data,update the UI on the main thread dispatch_sync(dispatch_get_main_queue(),^{ cell.photoImageView.image = image; }); });