我在ARC下遇到了一个糟糕的访问问题。这是代码:
文件1我调用了通过self.array
的方法
[self.Cell setCollectionData:self.Array];
文件2
在单元格文件中,我调用了以下方法
- (void)setCollectionData:(NSArray *)collectionData {
[self.subCell setCollectionData:collectionData];
}
文件3
最后,一种叫做的方法
- (void)setCollectionData:(NSArray *)collectionData {
self.collectionData = collectionData;
}
这里,collectionData
导致了BAD ACCESS错误。
但是,我通过将self.cell
和self.subcell
更改为_cell
和_subcell
来解决问题。
我的问题是,为什么在ARC下会出现糟糕的访问问题?
您需要为setter方法以及getter、dealloc和init方法使用ivar。问题是,你厌倦了通过设置值来设置值,结果得到了设置的无限循环。self.collectionData =
一次又一次地调用这个方法-(void)setCollectionData:(NSArray *)collectionData
。你需要像下面的一样使用它
-(void)setCollectionData:(NSArray *)collectionData {
_collectionData = collectionData;
}