Ios7 MCSession后台多eer

Ios7 MCSession后台多eer,ios7,multipeer-connectivity,Ios7,Multipeer Connectivity,我使用以下方法通过ios7中的multi-peer发送文件: _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

我使用以下方法通过ios7中的multi-peer发送文件:

_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\u async块中? 这可能会有帮助。
另外,如何获取imageurl?也许在离开并重新启动你的应用程序时,它不知何故无法被读取

我也以不同的方式遇到了这个问题。在更新进度条的代码部分,您需要将代码放入此块中,使其调用主thead:

dispatch_async(dispatch_get_main_queue(), ^{  
//insert progress bar code here
});

我不知道为什么会发生这种情况,但这似乎已经为我解决了。

之所以会发生这种情况,是因为委托方法不是从主线程调用的。