【有疑问,待解决】iOS 9 memory leak

一、UITabBarButton initWithImage:selectedImage:label:withInsets

使用instrument测试leaks,测出结果:

点击切换 Call Tree 双击条目

跳转代码为:

 for (int i=0; i<self.tabBar.items.count; i++) {


        UITabBarItem*item=self.tabBar.items[i];

        NSString*imageName=seleImageArray[i];
        NSString*unImageName=unSeleImageArray[i];
        [item setSelectedImage:[[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]];
        [item setImage:[[UIImage imageNamed:unImageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal ]];        
        item.title=tabBarName[i];
        item.tag=i;

    }

标注颜色的位置 内存泄露 4bytes*2

二、UIWebSelectionAssistant addNonEditableForceTextSelectionGestureRecognizersToView 造成内存泄露
三、OpenUDID memory leak

代码

  NSString * appUID = (NSString *) [defaults objectForKey:kOpenUDIDAppUIDKey];
    if(appUID == nil)
    {
      // generate a new uuid and store it in user defaults
      CFUUIDRef uuid = CFUUIDCreate(NULL);
      appUID = (NSString *) CFUUIDCreateString(NULL, uuid);
      CFRelease(uuid);
    }

instrument 检测leak 结果

  appUID = (NSString *) CFUUIDCreateString(NULL, uuid);

泄露
这个方法返回的对象是CFStringRef格式,这是个Core Foundation对象,在这里将其强制转换以后可以当做NSString对象来使用,但是这个CF对象是的引用计数+1,此时是需要处理的,在ARC下也不会自动释放,需要手动在使用完这个对象后调用CFRelease去手动释放即: CFRelease(uuid);

此时测试还存在内存泄露,

  [appUID autorelease];

对appUID 添加自动释放池问题解决,再次检测leak memory不存在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值