0
点赞
收藏
分享

微信扫一扫

友盟第三方登入后,进行分享,成功后退出登录,选择QQ再登录,结果程序就崩溃了!!!

yongxinz 2022-10-25 阅读 139


友盟打印的崩溃日志,控制器是进行分享的控制器。

 *** -[HNWatchLivingRoomController isMemberOfClass:]: message sent to deallocated instance 0x1372bfa00


下面是自定义的工具类,封装的一个进行第三方分享的加方法:

+ (void)jhThirdPartyShareWithTitle:(NSString *)title url:(NSString *)url shareText:(NSString *)text inController:(UIViewController <UMSocialUIDelegate> *)vc
{
//分享的title
[UMSocialData defaultData].extConfig.title = title;

//-------> 设置分享后,点击跳转的url,不设置,就是AppDelegate.m里面设置的 url
//Qzone
[UMSocialData defaultData].extConfig.qzoneData.url = url;

//QQ
[UMSocialData defaultData].extConfig.qqData.url = url;
[UMSocialData defaultData].extConfig.qqData.qqMessageType = UMSocialQQMessageTypeDefault;

//微信好友
[UMSocialData defaultData].extConfig.wechatSessionData.url = url;

//微信朋友圈-只显示图片和标题,不显示内容
[UMSocialData defaultData].extConfig.wechatTimelineData.url = url;

[UMSocialData defaultData].extConfig.wxMessageType = UMSocialWXMessageTypeText;

[UMSocialSnsService presentSnsIconSheetView:vc
appKey:UMAPPKEY
shareText:text
shareImage:[UIImage imageNamed:@"icon-about"]
shareToSnsNames:@[UMShareToWechatSession,UMShareToWechatTimeline,UMShareToSina,UMShareToQQ,UMShareToQzone]
delegate:vc];
}


后来猜想,是delegate设置为vc出现了问题。

把delegate设置为nil时,结果就没有崩溃了。


但是,设置为nil时,分享回调就没有了。


于是,把delegate设置为self(工具类),在工具类里面,定义一个block。


在代理里面,用block进行回调。


代码:


- (void)jhThirdPartyShareWithTitle:(NSString *)title 
url:(NSString *)url
shareText:(NSString *)text
inController:(UIViewController <UMSocialUIDelegate> *)vc
callBackBlock:(void (^)())callBlock
{
//保存block
_callBackBlock = callBlock

......
}


#pragma mark UMSocialUIDelegate
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity *)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode == UMSResponseCodeSuccess)
{
//得到分享到的平台名
DLog(@"share to sns name is %@",[[response.data allKeys] objectAtIndex:0]);

//分享成功
if (_callBackBlock){
_callBackBlock();
}

}
}



举报

相关推荐

0 条评论