在我的应用我有一个滚动视图和四个表视图。 每当一个被拖动,然后释放,我得到一个48字节的泄漏。 这确实增加了。 正如你所看到的,泄漏的两组具有相同的源。 有没有人见过这样一个之前泄漏?
编辑1:
当我的箭头点击旁边的泄漏,我得到这个信息的泄漏:
在我的应用我有一个滚动视图和四个表视图。 每当一个被拖动,然后释放,我得到一个48字节的泄漏。 这确实增加了。 正如你所看到的,泄漏的两组具有相同的源。 有没有人见过这样一个之前泄漏?
当我的箭头点击旁边的泄漏,我得到这个信息的泄漏:
你们看到的是iOS中5.1一个已知的bug,并在iOS的开发者论坛,即将被讨论。 您可以在论坛中“的strdup”搜索找到相关线索。 见“元素应用程序内存泄漏”线程。 搜索从苹果员工的职位。
最有可能的,这是你的错,不知何故。
在分配仪器,按“i”按钮,打开“录制引用计数”。 然后,仪器可以显示所有的分配,保留,自动释放,并释放发生在那些对象的事件。 (你应该看到一个箭头旁边的每个项目泄露 - 单击可以显示该对象的分配历史记录。)
我想你会发现你的一些代码是保留的东西,或者间接地导致它被保留。 大概滚动视图或其手势识别的一个,作为一个猜测。
一种解决方法:
我意识到,这在某种程度上泄露字节存储滚动视图中。 你必须释放你的滚动视图,并再次ALLOC它不时,保持其状态。 你发现时,你应该重新加载滚动视图是你的方式,取决于你的应用需求。 每次释放滚动视图时,这些字节也被释放。
解决方法:我发现,发生在handlePan内存泄漏:如果UIScrollView的委托设置。 我需要的委托方法,所以我子类的UIScrollView,并宣布我自己@protocol。 然后我推翻了滚动视图panGestureRecognizer的目标选择,而无需将其发送到超:
//yourScrollView.h
@protocol yourScrollViewDelegate
-(void)yourProtocol;
@end
//yourScrollView.m
-(void)handlePan:(id)sender{
[yourDelegate yourProtocol];
}