内存泄漏每次UIScrollView被释放

在我的应用程序中,我有一个滚动视图和四个表视图。 每次拖动,然后释放,我得到一个48字节的泄漏。 这真的加起来。 正如你所看到的,两组泄漏都有相同的来源。 有没有人看到过这样的泄漏?




编辑1:

当我点击漏洞旁边的箭头时,我得到这个泄漏信息:

你所看到的是iOS 5.1中的一个已知错误,正在iOS开发者论坛中讨论。 你可以通过在论坛search“strdup”find相关的线索。 请参阅标题为“元素应用程序内存泄漏”的主题。 search苹果员工的post。

很可能,这是你的错,不知何故。

在分配仪器中,按下“i”button并打开“logging参考计数”。 然后仪器可以显示所有的分配,保留,自动释放,并释放这些对象发生的事件。 (您应该看到每个泄露项目旁边的箭头 – 单击它以显示该对象的分配历史logging。)

我想你会发现你的一些代码保留了某些东西,或者间接地导致了它的保留。 可能是滚动视图或其手势识别器之一,作为一个猜测。

解决方法:

我意识到,不知何故这泄漏的字节存储在滚动视图。 你不得不释放你的滚动视图,并不时分配它,保持其状态。 您检测何时应该重新加载滚动视图的方式由您决定,取决于您的应用程序需求。 每次释放滚动视图时,这些字节也被释放。

解决方法:我发现handlePan中发生内存泄漏:如果设置了UIScrollView委托。 我需要的委托方法,所以我subclassed UIScrollView,并宣布我自己的@协议。 然后我覆盖scrollView panGestureRecognizer的目标select器,而不发送给超级:

//yourScrollView.h @protocol yourScrollViewDelegate -(void)yourProtocol; @end //yourScrollView.m -(void)handlePan:(id)sender{ [yourDelegate yourProtocol]; }