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 
}); 

我不知道为什么会这样,但是这似乎已经解决了它我。

+0

发生这种情况是因为委托方法未从主线程调用。 –