友盟分享面板内存泄露

故障描述:

FBRetainCycleDetector 检测出控制器有内存泄露

解决方案:

经过挨个排查,排除自己写的block嫌疑后,目标锁定在友盟分享面板的block上,友盟的block对内部使用的对象强引用(所有的block都会),内部对象直接或者间接强引用了友盟的block(还未确定具体引用),在把block内部引用的对象全部weak修饰以后,问题解决

[UMSocialUIManager showShareMenuViewInWindowWithPlatformSelectionBlock:^(UMSocialPlatformType platformType, NSDictionary *userInfo) {

        //创建分享消息对象
        UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
        messageObject.text = [NSString stringWithFormat:@"%@",appName];
        messageObject.text = modelWeak.shareImg;//这里需要弱引用
        
        //调用分享接口
        [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:selfWeak  completion:^(id data, NSError *error) { //这里需要弱引用

            if (error) {
                NSLog(@"************Share fail with error %@*********",error);
            }else{
                NSLog(@"response data is %@",data);
            }
        }];
    }];

补充:

block 会对里面所有的对象进行强引用,打破循环引用的关键是确认内部的对象是否对block直接或者间接进行了强引用。

你可能感兴趣的:(友盟分享面板内存泄露)