我最近两次发生这种行为,我想知道问题的根本原因是什么(也就是我如何确保这种情况永远不会发生,所以我不必浪费大量时间来修复它)。
当我在计划重用的 tableview 单元格内分配某些内容时,一旦加载了另一个单元格并重新加载了表,有时该对象就会被释放。
例子:
SubHolder *dataStorage;
- (void) initializeLicenseTable
{
LicenseCell *sampleLicense = [LicenseCell new];
self.licenseData = [[NSMutableArray alloc] initWithObjects:sampleLicense, nil];
nib = [UINib nibWithNibName:@"LicenseCell" bundle:nil];
if (dataStorage == nil)
{
dataStorage = [SubHolder new];
dataStorage.owner = self;
[dataStorage addStorageLocation];
}
} //cellForRowAtIndexPath and stuff
如果没有 if 语句,此代码将无法工作(它会导致 dataStorage 变成僵尸)
是什么导致了这种行为?似乎测试 dataStorage 是否为零,然后才分配它与解决僵尸问题的方法相反。
-编辑-
如果这种行为是由共享变量引起的,我怎样才能使每次创建该对象的实例时都创建自己的数据存储对象?每个表都有自己的信息,不与其他表共享。