- [NSError保留]:消息发送到释放实例
僵尸启用,我在下面的saveToURL电话获取的称号(消息发送到NSError的释放的实例)错误:- [NSError保留]:消息发送到释放实例
[aDocument saveToURL:aDocument.fileURL
forSaveOperation:UIDocumentSaveForOverwriting
completionHandler:^(BOOL success) { ...
堆栈跟踪如下所示:
aDocument是UIManagedDocument的子类的实例。我有并发调试,我已经看看是否有任何线程冲突,还没有找到任何。我怎样才能调试呢?
编辑:另外尝试下面的代码发生
__weak typeof(self) weakSelf = self;
[aDocument saveToURL:aDocument.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) {
if (success) {
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf documentSaved:aDocument forRestoredAssessment:patientAssessment];
});
}
}];
编辑死机一样:赏金增加
我相信我弄清楚是什么导致了这一点,因为我做了以下更改,然后错误消失了。这个错误很难解决,尽管它并没有直接指出这是原因。
我正在使用UIDocumentSaveForOverwriting,但我发现有时该文件已被其他进程删除。
因此,要解决我测试文件存在的问题,然后使用UIDocumentSaveForOverwriting或基于此的UIDocumentSaveForCreating。
似乎调用完成块代码的对象可能不是在那个时候是各地,所以你需要一些方法来保持活力。
试试这个代码:
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf documentSaved:aDocument forRestoredAssessment:patientAssessment];
});
让我知道,如果你仍然有问题。
以下的答案我试过你的解决方案。我犯了同样的错误。我真的不认为它在该块内部崩溃。我怀疑当另一个线程尝试去保存时,它可能与尝试保存有关。 –
@BradThomas文档是函数/方法或某个类变量的局部变量吗? – ppalancica
aDocument是传入方法的参数 –
你在completionHandler里面做什么? – ppalancica
这种方法被称为... [self documentSaved:a Document for ReestoredAssessment:patientAssessment];这是一大堆东西。 –
通常,在UIKit中触摸ANYING或从任何不是主队列的线程直接与UIKit相关是不安全的。事实上,我认为这是问题的核心。 – Mgetz