我最近有两次这种行为发生在我身上,我想知道问题的根源是什么(又如何确保这种情况永远不会发生,所以我不必浪费大量的时间修复它)。在UITableView ARC奇怪的释放行为
当我在一个预定要重用的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是否为零,只有然后分配它是什么应该修复僵尸问题的相反。
CNC中
如果这种行为是由变量共享造成的,我怎么可以把它使每个创建该对象的实例时它使自己的数据存储对象?每个表都有自己的信息,不与其他表共享。
的数据存储一全局变量? – sergio
它在文件的上下文中是'全局的'。 – Dustin