【发布时间】:2014-01-16 13:08:41
【问题描述】:
当应用程序从后台恢复到活动状态时,我有一个调用 NSfetch request 的方法。有时由于NsnotificationManager,有2个该方法的实例被调用。
当我查看我的应用程序崩溃日志时,它会显示此内容
2 CoreData 0x30321a90 -[_PFLock lock] + 20
3 CoreData 0x30332b34 -[NSPersistentStoreCoordinator executeRequest:withContext:error:] + 776
4 CoreData 0x30331776 -[NSManagedObjectContext executeFetchRequest:error:] + 610
5 My app 0x000ee7e0 -[ViewController CheckExistingData] (ViewController.m:350)
第 350 行的语句是:
NSArray *array = [[self managedObjectContext] executeFetchRequest:fetch error:&error];
这种情况偶尔发生,而且很少没有任何固定的重现步骤。当我检查日志时,这通常发生在同时调用此方法 2 次时;一位来自NSnotification Manager 和一位来自View 确实出现了。我尝试将@syncronided() 添加到被调用两次的方法中,但我遇到了同样的错误。有没有其他方法可以确保NSfetch 被一个线程访问/比如添加锁之类的。
我们将不胜感激。
【问题讨论】:
-
您需要使用@synchronized 发布您的一些代码,然后才能有人提供帮助。
标签: objective-c cocoa-touch core-data nsfetchrequest