多个Cell共用一个控件导致死循环和内存暴涨

新手

  • 在给cell的accessoryView赋值时发现每个辅助视图都要创建一个view,每个view又都相同,然后我就想能不能只创建一次,给每个cell都赋值同一个view,于是就有了如下代码:
/**
   *  其中有一部分是在storyboard中完成的
   */

@interface XSPTableViewController ()
//每个cell的辅助视图都为arrowView
@property (nonatomic, strong) UIImageView *arrowView;
@end

@implementation XSPTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
}
//懒加载
- (UIImageView *)arrowView
{
    if (_arrowView == nil) {
        _arrowView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_right"]];
    }
    return _arrowView;
}

#pragma mark - Table view data source
//一共10个Cell
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
}
//返回每个cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    XSPTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    cell.accessoryView = self.arrowView;
    return cell;
}
@end

*** 然后,他就死掉了!!! 内存暴涨 ***
如图:

Snip20160506_2.png
  • 但是xcode有没有触发异常,内存都占用了400多M,还是没有报异常
  • 最后自定义一个cell,然后重写了好多方法,发现程序在layoutSubviews方法中死循环
Snip20160506_1.png
  • 代码如下:
  @implementation XSPTableViewCell
- (void)layoutSubviews
{
    [super layoutSubviews];
    NSLog(@"%s", __func__);
}
@end

还请各位大神解释下原因啊!搞不懂为什么。新手一枚,大神勿喷!

推荐阅读更多精彩内容

  • 因为要结局swift3.0中引用snapKit的问题,看到一篇介绍Xcode8,swift3变化的文章,觉得很详细...
    uniapp阅读 3,313评论 0 12
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 25,390评论 30 469
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 161,777评论 24 692
  • 尘封的相册 保存好久的照片 有你有我有青春的模样 我的双眼是如此的迷离 可你却如此的拘谨 搭着你的肩膀 闻着你的气...
    蛰伏的爱lby阅读 95评论 0 0
  • 据悉,百格学术会议系统已于近日完成内测工作,正式进入运营阶段。 //百格学术会议系统是什么?// 百格学术会议系统...
    百格活动阅读 222评论 0 0
  • 08:00,距离下车还有29分钟,也许这是我和她有联系的最后29分钟了。这个我在火车上认识的女孩或许将永远的在我的...
    兔的狼朋友阅读 181评论 0 0
  • 我在一对仇人之间周旋。 仇人嘛,一定是有过恩,才有怨,有过亲,才会疏,有信任和付出,才有失望和怨怼。时间积累,嫌隙...
    b2247950c6d4阅读 87评论 0 1