Objective c 第123行分配并存储到'中的对象的潜在泄漏;第'页;
分析工具给出了这行代码的潜在泄漏Objective c 第123行分配并存储到'中的对象的潜在泄漏;第'页;,objective-c,memory-leaks,Objective C,Memory Leaks,分析工具给出了这行代码的潜在泄漏 for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) { for(int index=firstneedpageindex;index您永远不会释放在代码段底部分配的页面(假设您没有使用ARC)您永远不会释放在代码段底部分配的页面(假设您没有使用ARC)如果出现“页面”添加到//回收不再可见的页面部分中的回收页面将永远不会在//添加缺少的页面部分中重复使
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) {
for(int index=firstneedpageindex;index您永远不会释放在代码段底部分配的页面(假设您没有使用ARC)您永远不会释放在代码段底部分配的页面(假设您没有使用ARC)如果出现“页面”添加到//回收不再可见的页面
部分中的回收页面
将永远不会在//添加缺少的页面
部分中重复使用
我在函数中看不到recycledPages
的声明,因此我假设它们与您的视图(或其他对象)绑定。然后,在终止或关闭视图(或您识别的任何其他条件)时,您需要释放未使用的回收页
如果您确实这样做了,那么分析工具可能没有“足够亮”来识别它。如果在//回收不再可见的页面
部分中向回收的页面
中添加了一个“页面”,则将发生泄漏。
//添加缺少的页面部分将永远不会重复使用
我在函数中看不到recycledPages
的声明,因此我假设它们与您的视图(或其他对象)绑定。然后,在终止或关闭视图(或您识别的任何其他条件)时,您需要释放未使用的回收页
如果您确实在这样做,那么分析工具可能没有“足够明亮”来识别它
- (void)tilePages
{
// Calculate which pages are visible
CGRect visibleBounds = pagingScrollView.bounds;
int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds) / CGRectGetWidth(visibleBounds));
int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1) / CGRectGetWidth(visibleBounds));
firstNeededPageIndex = MAX(firstNeededPageIndex, 0);
lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1);
// Recycle no-longer-visible pages
for (ImageScrollView *page in visiblePages) {
if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) {
[recycledPages addObject:page];
[page removeFromSuperview];
}
}
[visiblePages minusSet:recycledPages];
// add missing pages
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) {
if (![self isDisplayingPageForIndex:index]) {
ImageScrollView *page = [self dequeueRecycledPage];
if (page == nil) {
page = [[ImageScrollView alloc] init];
}
[self configurePage:page forIndex:index];
[pagingScrollView addSubview:page];
[visiblePages addObject:page];
}
}
}