内存在iOS 7中设置UINavigationBar背景图像或TabBar项目图像时出现泄漏

时间:2013-10-20 10:13:50

标签: ios memory-leaks

我尝试在界面构建器

中更改自定义标签栏项目图像

图像尺寸为54x58

应用程序编译并运行正常! 但是当我使用Xcode(CMD + I> Leaks)仪器对其进行分析时,它会显示以下内存泄漏,

// ... 
Leaked Object   #  Address    Size      Responsible Library   Responsible Frame
Malloc 48 Bytes 1  0xada86a0  48 Bytes  CoreGraphics          CGGlyphBitmapCreate
Malloc 48 Bytes 1  0xe1905d0  48 Bytes  CoreGraphics          CGGlyphBitmapCreate
Malloc 32 Bytes 1  0xad96170  32 Bytes  CoreGraphics          C

// .... 

堆栈跟踪没有显示我的任何代码泄漏, 只需在AppDelegate中为NavigationBar或TabBar设置自定义背景图像,即可触发此问题

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    // Some Look and Feel 
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg"]];

    [[UINavigationBar appearance] setBackgroundImage:navbar_bkg_image
                                       forBarMetrics:UIBarMetricsDefault];
 // where navbar_bkg_image is UIImage 

    return YES;
}

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

在iOS 7.0中使用UIImageView时,这是一个已知错误。所以问题可能不是标签栏或导航栏的结果,而是它们都使用的UIImageView对象。如果在您注释掉这些行时报告的泄漏消失了,您可以安全地忽略泄漏(我们只能控制我们的操作,而不是iOS 7生成的泄漏)。

话虽如此,在iOS 7.0.3(Xcode版本5.0.1 5A2053)中重新测试它,看起来苹果可能已经解决了这个问题。

答案 1 :(得分:-1)

尝试使用@autoreleasepool,它将解决您的问题。