strom001
V2EX  ›  iDev

真是见鬼了,这个方法为何会执行两次?

By strom001 at 2015 年 9 月 14 日 · 4816 次点击
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

//  下面 _assetFetchResult 是提取的一个相册,这些都不重要

 [_imageManager requestImageForAsset:_assetFetchResult
                                 targetSize:size
                                contentMode:PHImageContentModeAspectFit
                                    options:nil
                              resultHandler:^(UIImage *result, NSDictionary *info ){

                                  _a++;  
                                  NSLog (@"%i", _a ); 
             // 这是定义的一个 int
             // 这个_a 的结果第一次为 1 ,第二次为 2 ,怎么会执行两次呢?

                              }];
           return cell;
}
第 1 条附言  ·  2015 年 9 月 15 日
UIImageView *view = [[UIImageView alloc] initWithFrame:cell.contentView.frame];
                                  view.image = result;
                                  view.contentMode = UIViewContentModeScaleAspectFit;
                                  [cell.contentView addSubview:view];
4 条回复  •  2015-09-15 15:46:07 +08:00
zwzmzd
   1
zwzmzd  
   2015 年 9 月 15 日 via Android
设断点,看调用栈,几分钟的事
EggmanQ
   2
EggmanQ  
   2015 年 9 月 15 日   ❤️ 1
没上下文没系统版本……

这跟 UICollectionView ( UITableView ) 的 cell 重用机制有关,最直接打断点就能看到了。

我之前调制 UITableView 的时候也发现类似的问题( iOS 8 ), cell 在准备重用的时候(快要移动到可见区域), UITableView 会调用一次 cellForRowAtIndexPath ,然后 cell 出现的时候(移动到可见区域,但只有 1 像素), UITableView 又会再调用一次 cellForRowAtIndexPath 。
strom001
   3
strom001  
OP
   2015 年 9 月 15 日
@EggmanQ @zwzmzd 谢谢二位。如果在 cell 里添加 image view 的话(代码如上),会产生两次(一大一小)图片,该怎么解决呢?
strom001
   4
strom001  
OP
   2015 年 9 月 15 日
终于找到原因了……和 cell 没关系,是别的地方影响了。
iOS 开发实用技术导航
NSHipster 中文版
› http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
› http://www.cocos2d-iphone.org/
CocoaPods
› http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
› http://code.google.com/mobile/analytics/
WWDC
› https://developer.apple.com/wwdc/
Design Guides and Resources
› https://developer.apple.com/design/
Transcripts of WWDC sessions
› http://asciiwwdc.com
Cocoa with Love
› http://cocoawithlove.com/
Cocoa Dev Central
› http://cocoadevcentral.com/
NSHipster
› http://nshipster.com/
Style Guides
› Google Objective-C Style Guide
› NYTimes Objective-C Style Guide
Useful Tools and Services
› Charles Web Debugging Proxy
› Smore
© 2026 V2EX · 37ms · 3.9.8.5