Ios UIViewController子类在关闭后未释放
因此,我遇到了一个似乎已经在这里一次又一次解决的问题。不幸的是,我束手无策,所以我会发帖,看看是否有人能帮忙 正如标题所示,我有一个内存泄漏(无限内存增长)。我可以在Instruments(Allocations)中看到我的InspectionPageTableViewController对象正在被分配,但从未解除分配-存在malloc,但没有相应的空闲。问题是,我看不出这是怎么回事。对象的整个历史如下所示(从实例化的视图控制器到其取消): 此事件的堆栈跟踪如下所示: 所述方法(在InspectionViewController中)的代码如下: 当InspectionViewController成功解除分配时,InspectionPageTableViewController在此处用行实例化Ios UIViewController子类在关闭后未释放,ios,objective-c,memory-management,Ios,Objective C,Memory Management,因此,我遇到了一个似乎已经在这里一次又一次解决的问题。不幸的是,我束手无策,所以我会发帖,看看是否有人能帮忙 正如标题所示,我有一个内存泄漏(无限内存增长)。我可以在Instruments(Allocations)中看到我的InspectionPageTableViewController对象正在被分配,但从未解除分配-存在malloc,但没有相应的空闲。问题是,我看不出这是怎么回事。对象的整个历史如下所示(从实例化的视图控制器到其取消): 此事件的堆栈跟踪如下所示: 所述方法(在Inspe
controller = [self.storyboard instantiateViewControllerWithIdentifier:@"InspectionPageTableViewController"];
。。。从来没有
我已经尝试从该对象的SuperView中删除InspectionPageTableViewController,以及从该对象中添加到的任何和所有视图中删除它(尽管这似乎毫无意义,因为调用对象无论如何都成功解除分配)。此外,在该类和InspectionPageTableViewController类本身之外,没有出现字符串“InspectionPageTableViewController”
我对UIStoryboard方法——InstanceEviewController WithiIdentifier表示怀疑:但我在这里看到了几个答案,它们说它返回一个自动释放对象。所以这不可能是问题所在
有人能告诉我这里发生了什么事吗?如果有更多关于该对象的有力引用,我肯定能够在仪器中看到历史中的保留事件。仔细阅读您所写的内容,我发现两个可能的原因: 2) 您错误地使用了视图控制器包含。VC遏制是出了名的棘手。您可能没有从self.childViewControllers中删除它(使用此包含删除操作的正确方法调用)
3) 如果您要将VC添加到导航控制器中,则应该使用推送和弹出,而不是包含。因此有几件事是错误的。我没有在仪器中启用“记录参考计数”,因此我无法了解全部情况。整个画面如下所示:
以及中间所有的调用,TabLVIEW:VIEWFHealErrInCube保留,涉及一个对象,InspectionPageTableViewController将其设置为委托。遗憾的是,这个对象的委托属性是“强的”。一旦设置为“弱”,对象将按预期自动解除分配。所以,这又是一个“常见的疑点”。
历史垃圾堆不仅仅是一点误导。。。我没有启用“记录引用计数”。现在看一个更完整的转储。经过大量挖掘,我发现我在VC中有一个具有强大委托属性的组件。VC将自己设置为委托。所以通常的嫌疑犯之一。感谢您的阅读和回复:)controller = [self.storyboard instantiateViewControllerWithIdentifier:@"InspectionPageTableViewController"];