这是我的代码:
__weak CurrentViewController *weakSelf = self;
if (indexPath.row == 0) //Name Cell
{
static NSString *CellIdentifier = @"NameCell";
NameCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
__weak NameCell *weakCell = cell;
cell.NameDidChangeBlock = ^(){
weakSelf.zoneName = weakCell.NameTextField.text;
};
return cell;
}
else if (indexPath.row == 1) //Number Cell
{
static NSString *CellIdentifier = @"NumberCell";
NumberCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
cell.someBlock = ^(){
[weakSelf.navigationController popViewControllerAnimated:YES];
};
return cell;
}
" NameCell"也不是" NumberCell" dealloc方法被调用。 我在CurrentViewController的故事板中设计并将这些自定义单元设置为顶级对象。
CurrentViewController的dealloc正在调用,但自定义单元格的dealloc不会被调用。 我在仪器中看到,每次创建一个CurrentViewController实例时,自定义单元格的retainCount都会增加。
以下是自定义单元格的标题:
//NameCell.h:
@property(nonatomic, weak)IBOutlet UITextField *NameTextField;
@property (nonatomic, copy)NameDidChange NameDidChangeBlock;
//NumberCell.h
@property(nonatomic, weak)Manager *manager;
@property(nonatomic, weak)IBOutlet AKPickerView *pickerView;
@property(nonatomic, strong)NSArray *numbersArray;
@property(nonatomic)int selectedZoneNumber;
@property (weak, nonatomic) IBOutlet UIView *selectionBoxView;
@property (nonatomic, copy)some someBlock;
这里的任何帮助将不胜感激。 谢谢!
修改 在CurrentViewController获取dealloc后,我的tableView本身没有得到dealloc&ed; ed。 试图登录UITableView类别。 仍然,猜测,为什么我的tableView会在我的viewController已经发布时不会被释放。似乎太奇怪了。
答案 0 :(得分:0)
罪魁祸首就是这个家伙:ShowKit
我们已将ShowKit集成到我们的远程支持应用程序中。
从我们的应用程序中删除他们的SDK确实解决了上面提到的dealloc问题(不仅仅是上面的问题,但还有比我们想象的更多的问题)。
我认为ShowKit SDK确实会获取我们应用程序视图的副本并且不会将其返回,并且可能是复制视图的保留计数根本不会变为0。
OR
SDK可能会覆盖我应用的UIWindow,并且在不需要时它们不会发布它。
这纯粹是我的猜测,但不确定。他们必须回答它。
我希望有人觉得这很有帮助。