友盟打印的崩溃日志,控制器是进行分享的控制器。
*** -[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();
}
}
}