在项目中用到类似照片墙的表格实现,在网上找到DTGridView的开源实现,经过修改,达到预期效果,项目用的arc,但是DTGridView代码里没有,利用系统工具做了转换。在超出一屏时,复用旧DTGridViewCell单元格的时候,会崩溃,一直没有仔细查找原因。知道昨天,对DTGridView实现,重新理清了,知道为什么崩溃,是因为arc转换的时候,对原来的retain删掉了,现在变成了
for (DTGridViewCell *c in freeCells) {
if ([c.identifier isEqualToString:identifier]) {
[freeCells removeObject:c];
[c prepareForReuse];
return c;
}
}
c 从数组freeCells移除后,c指向的内存就释放了,造成了崩溃,
所以只需要引入另一个变量即可, DTGridViewCell *retCell = c; [freeCells removeObject:c]; [retCell prepareForReuse];return retCell;即可,问题解决。
retCell;
}
}