0

我正在使用这种方法通过 ios7 中的多个对等方发送一个文件:

_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 没有显示崩溃。就好像应用程序继续运行但用户界面完全冻结一样。有没有人有想法?

4

2 回答 2

1

您是否尝试过将发送数据的代码包装在 dispatch_async 块中?这可能会有所帮助。另外你如何获得imageurl?也许在离开然后重新进入您的应用程序时无法读取它

于 2013-11-04T11:38:38.733 回答
0

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

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

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

于 2014-01-20T19:44:03.497 回答