0

我从这个应用程序中得到了这些巨大的泄漏,我似乎无法解决这个问题。

负责的 Frame 是 CGDataProviderCreateWithCopyOfData

这是泄漏。

在此处输入图像描述 在此处输入图像描述

编辑

我认为导致问题的线路

  CGRect frame = CGRectMake(0, 0, 320, 49);
    UIView *myview = [[UIView alloc] initWithFrame:frame];
    myview.backgroundColor = [UIColor blackColor];
    [myview addSubview:[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"tabbar-3.png"]]];
    if ([[[UIDevice currentDevice] systemVersion] floatValue] < 5)  {
        [[tabController tabBar] insertSubview:myview atIndex:0];
    }else{
        [[tabController tabBar] insertSubview:myview atIndex:1];
    }

    if ([UITabBar instancesRespondToSelector:@selector(setSelectedImageTintColor:)]){
        [[tabController tabBar] setSelectedImageTintColor:[UIColor colorWithRed:189.f/255 green:224.f/255.f blue:2.f/255.f alpha:1]];

        [[tabController tabBar] setTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"g1.png"]]];

        [[UITabBar appearance] setSelectedImageTintColor:[UIColor colorWithRed:189.f/255 green:224.f/255.f blue:2.f/255.f alpha:1]];


        [[tabController tabBar] setSelectionIndicatorImage:[UIImage imageNamed:@"hover.png"]];
        [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"hover.png"]];

        for (int i=0; i<[tabController.viewControllers count]; i++) {
            UIViewController *tab= [tabController.viewControllers objectAtIndex:i];

            [tab.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                [UIColor colorWithRed:189.f/255 green:224.f/255.f blue:2.f/255.f alpha:1], UITextAttributeTextColor, 
                                                [NSValue valueWithUIOffset:UIOffsetMake(0,0)], UITextAttributeTextShadowOffset, 
                                                [UIFont fontWithName:@"Lucida Grande-Bold" size:10.0], UITextAttributeFont, nil]
                                      forState:UIControlStateSelected];
        }

导致这个问题。我的任务是修复这些泄漏,但需要帮助修复这些泄漏。任何帮助都会很棒。

谢谢

4

2 回答 2

1

通常很难隔离泄漏。根据评论与答案的比率,我认为您不会在 Stack Overflow 上得到答案。

我认为这种情况下最好的策略是复制你的项目,然后删除代码,直到你可以用尽可能少的代码重现泄漏。在那时候:

  1. 解决方案将是显而易见的;或者
  2. 您将能够在此处发布更集中的问题;或者
  3. 这显然是一个错误,您将能够向 Apple 提交一份有用的报告。

您可能还想退后一步,看看是否存在不相关的内存问题。启用 ARC 后,您可能会“废弃”内存:可访问,因此严格来说不是泄漏,但不再使用。bbum 有一些以这种方式使用 Instruments 的好技巧

于 2012-07-18T20:22:16.790 回答
0

我看到诸如 addSubview 和 insertSubview 之类的东西,但没有任何东西可以删除。您确定要根据需要删除子视图吗?看起来您正在分配其他对象并将它们放在其他对象之上。

于 2016-03-25T03:17:52.170 回答