您的位置:首页 > 其它

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

2016-09-06 18:14 423 查看
友盟打印的崩溃日志,控制器是进行分享的控制器。
 *** -[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();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: