故障描述:
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直接或者间接进行了强引用。










网友评论