MCSession multipeer背景
问题描述:
我通过多方同行中ios7文件使用此方法发送:MCSession multipeer背景
_progressSend = [session sendResourceAtURL:imageUrl withName: info toPeer:peerID withCompletionHandler:^(NSError *error) {
// Implement this block to know when the sending resource transfer completes and if there is an error.
if (error) {
NSLog(@"Send resource to peer [%@] completed with Error [%@]", peerID.displayName, error);
}
else {
// Create an image transcript for this received image resource
}
}];
的问题是很奇怪的。这是发生了什么事:
设备开始发送资源,进度条开始填满。当我将应用程序置于后台并检查我的电子邮件时,传输仍在继续(我可以从其他设备的进度条中看到)。如果传输已完成,并且我回到应用程序中,则一切正常,但如果我在传输资源时进入应用程序(例如,我退出1/3的路并以2/3打开它)应用程序完全冻结,需要从多任务栏中关闭。但Xcode不显示崩溃。这就好像应用程序一直运行,但用户界面完全冻结。有没有人有想法?
答
你是否试过包装你的代码,在dispatch_async块中发送数据? 这可能有帮助。 你怎么得到imageurl?也许它不知道什么时候离开,然后重新给你的应用程序
答
我也有这个问题以不同类型的方式。上更新你需要使它通过将代码块中调用主THEAD进度条的部分代码:
dispatch_async(dispatch_get_main_queue(), ^{
//insert progress bar code here
});
我不知道为什么会这样,但是这似乎已经解决了它我。
发生这种情况是因为委托方法未从主线程调用。 –