Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 为什么我的核心数据对象会丢失它';谁的关系?_Xcode_Core Data - Fatal编程技术网

Xcode 为什么我的核心数据对象会丢失它';谁的关系?

Xcode 为什么我的核心数据对象会丢失它';谁的关系?,xcode,core-data,Xcode,Core Data,我在viewDidLoad中有以下代码: NSManagedObjectContext *moc=[[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; [moc setParentContext:[AppCoreDataHandler sharedManagedObjectContext]]; self.restroom=

我在viewDidLoad中有以下代码:

NSManagedObjectContext *moc=[[NSManagedObjectContext alloc]
                              initWithConcurrencyType:NSMainQueueConcurrencyType];
[moc setParentContext:[AppCoreDataHandler sharedManagedObjectContext]];
self.restroom=[NSEntityDescription insertNewObjectForEntityForName:@"Restroom"
                                            inManagedObjectContext:moc];
self.restroom.coordinate=[((AppDelegate *)[[UIApplication sharedApplication] delegate]) locationManager].location.coordinate;
self.review=[NSEntityDescription insertNewObjectForEntityForName:@"Review"
                                          inManagedObjectContext:moc];
[self.restroom addReviewsObject:self.review];
使用调试控制台进行测试表明self.restroom.reviews等同于包含审阅的NSSet。当我到达“视图将出现”时,self.restroom.reviews为零。我不会在代码中的任何地方将评论设置为零。自我审查在整个过程中保持完全有效。这根本没有道理

我绞尽脑汁想弄明白这件事。它不可能是任何多线程代码,我没有为属性/关系分配任何其他内容,对象没有弱保留和释放自身,它只是。。。消失。为什么?

编辑:更有趣的是,我使用键值观察来检查值何时更改

根据我对堆栈跟踪的了解,它在viewDidLoad函数中被更改。但是,当我逐步阅读代码时,键值通知会在函数结束后清楚地发送

纯粹是愚蠢的运气(阅读:hrm,我想知道是否…不。那么好吧。我想知道是否…并重复大约2亿次迭代),我找到了答案

我为这些对象创建的子MOC不是在最后一次引用它之后(我希望ARC会这样做),而是在函数的末尾被释放。当它死亡时,它并没有解除分配给它的对象,但它确实剥夺了它们之间的关系。(我猜,虽然看起来NSSet提供了这些功能,但它实际上是MOC的一部分)